Armado de Esquemas YML
Versión 1 (Guillermo Zdanowicz, 30/09/2015 15:56) → Versión 2/6 (Guillermo Zdanowicz, 30/09/2015 15:59)
h1. Armado de Esquemas YML
A diferencia de Symfony 1, el esquema es armado por cada clase
*Primero creamos la carepta doctrine*
mkdir src/JobeetBundle/Resources/config/doctrine
Creamos y editamos los archivos de esquemas
mcedit src/JobeetBundle/Resources/config/doctrine/Category.orm.yml
<pre>
# src/JobeetBundle/Resources/config/doctrine/Category.orm.yml
JobeetBundle\Entity\Category:
type: entity
table: category
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
name:
type: string
length: 255
unique: true
oneToMany:
jobs:
targetEntity: Job
mappedBy: category
manyToMany:
affiliates:
targetEntity: Affiliate
mappedBy: categories
</pre>
mcedit src/JobeetBundle/Resources/config/doctrine/Job.orm.yml
<pre>
# src/JobeetBundle/Resources/config/doctrine/Job.orm.yml
JobeetBundle\Entity\Job:
type: entity
table: job
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
type:
type: string
length: 255
nullable: true
company:
type: string
length: 255
logo:
type: string
length: 255
nullable: true
url:
type: string
length: 255
nullable: true
position:
type: string
length: 255
location:
type: string
length: 255
description:
type: text
how_to_apply:
type: text
token:
type: string
length: 255
unique: true
is_public:
type: boolean
nullable: true
is_activated:
type: boolean
nullable: true
email:
type: string
length: 255
expires_at:
type: datetime
created_at:
type: datetime
updated_at:
type: datetime
nullable: true
manyToOne:
category:
targetEntity: Category
inversedBy: jobs
joinColumn:
name: category_id
referencedColumnName: id
lifecycleCallbacks:
prePersist: [ setCreatedAtValue ]
preUpdate: [ setUpdatedAtValue ]
</pre>
mcedit src/JobeetBundle/Resources/config/doctrine/Affiliate.orm.yml
<pre>
# src/JobeetBundle/Resources/config/doctrine/Affiliate.orm.yml
JobeetBundle\Entity\Affiliate:
type: entity
table: affiliate
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
url:
type: string
length: 255
email:
type: string
length: 255
unique: true
token:
type: string
length: 255
is_active:
type: boolean
nullable: true
created_at:
type: datetime
manyToMany:
categories:
targetEntity: Category
joinTable:
name: category_affiliate
joinColumns:
affiliate_id:
referencedColumnName: id
inverseJoinColumns:
category_id:
referencedColumnName: id
lifecycleCallbacks:
prePersist: [ setCreatedAtValue ]
</pre>
*Generamos los archivos de Entidades*
php app/console doctrine:generate:entities JobeetBundle
*Luego trasladamos a la base de datos el esquema, en este caso conviene ya tener creada la base de datos segun lo configurado en parameters.yml*
php app/console doctrine:schema:update --force
A diferencia de Symfony 1, el esquema es armado por cada clase
*Primero creamos la carepta doctrine*
mkdir src/JobeetBundle/Resources/config/doctrine
Creamos y editamos los archivos de esquemas
mcedit src/JobeetBundle/Resources/config/doctrine/Category.orm.yml
<pre>
# src/JobeetBundle/Resources/config/doctrine/Category.orm.yml
JobeetBundle\Entity\Category:
type: entity
table: category
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
name:
type: string
length: 255
unique: true
oneToMany:
jobs:
targetEntity: Job
mappedBy: category
manyToMany:
affiliates:
targetEntity: Affiliate
mappedBy: categories
</pre>
mcedit src/JobeetBundle/Resources/config/doctrine/Job.orm.yml
<pre>
# src/JobeetBundle/Resources/config/doctrine/Job.orm.yml
JobeetBundle\Entity\Job:
type: entity
table: job
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
type:
type: string
length: 255
nullable: true
company:
type: string
length: 255
logo:
type: string
length: 255
nullable: true
url:
type: string
length: 255
nullable: true
position:
type: string
length: 255
location:
type: string
length: 255
description:
type: text
how_to_apply:
type: text
token:
type: string
length: 255
unique: true
is_public:
type: boolean
nullable: true
is_activated:
type: boolean
nullable: true
email:
type: string
length: 255
expires_at:
type: datetime
created_at:
type: datetime
updated_at:
type: datetime
nullable: true
manyToOne:
category:
targetEntity: Category
inversedBy: jobs
joinColumn:
name: category_id
referencedColumnName: id
lifecycleCallbacks:
prePersist: [ setCreatedAtValue ]
preUpdate: [ setUpdatedAtValue ]
</pre>
mcedit src/JobeetBundle/Resources/config/doctrine/Affiliate.orm.yml
<pre>
# src/JobeetBundle/Resources/config/doctrine/Affiliate.orm.yml
JobeetBundle\Entity\Affiliate:
type: entity
table: affiliate
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
url:
type: string
length: 255
email:
type: string
length: 255
unique: true
token:
type: string
length: 255
is_active:
type: boolean
nullable: true
created_at:
type: datetime
manyToMany:
categories:
targetEntity: Category
joinTable:
name: category_affiliate
joinColumns:
affiliate_id:
referencedColumnName: id
inverseJoinColumns:
category_id:
referencedColumnName: id
lifecycleCallbacks:
prePersist: [ setCreatedAtValue ]
</pre>
*Generamos los archivos de Entidades*
php app/console doctrine:generate:entities JobeetBundle
*Luego trasladamos a la base de datos el esquema, en este caso conviene ya tener creada la base de datos segun lo configurado en parameters.yml*
php app/console doctrine:schema:update --force