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

Redmine Appliance - Powered by TurnKey Linux