Опитвам се да създам приложение symfony2. Основната идея на проекта е, че има събитие, на което са поканени много гости и те са категоризирани. Създадох релационен модел за всички обекти.
Има 4 маси:
- Гости - който е поканен
- Категория - към коя категория/категории принадлежи?
- Събитие - събитието, на което са поканени
- Guest_Event (присъствие)
Стигнах до следните схеми:
xxxxBundle\Entity\Guest:
type: entity
table: guest
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
name:
type: string
length: 100
nullable: false
surname:
type: string
length: 100
nullable: false
email:
type: string
length: 255
nullable: true
address:
type: string
length: 255
nullable: true
phone:
type: string
length: 10
description:
type: text
created_at:
type: datetime
updated_at:
type: datetime
nullable: true
token:
type: string
length: 255
unique: true
is_activated:
type: boolean
nullable: true
manyToOne:
category:
targetEntity: Category
inversedBy: guest
joinColumn:
name: category_id
referencedColumnName: id
lifecycleCallbacks:
prePersist: [ setCreatedAtValue ]
preUpdate: [ setUpdatedAtValue ]
Категория
xxxxBundle\Entity\Category:
type: entity
table: category
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
name:
type: string
length: 255
unique: true
oneToMany:
guests:
targetEntity: Guest
mappedBy: category
attend:
targetEntity: Attendance
mappedBy: category
Събитие
xxxxxBundle\Entity\Event:
type: entity
table: event
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
name:
type: string
length: 100
nullable: false
location:
type: string
length: 255
nullable: true
scheduled_at:
type: datetime
manyToMany:
category:
targetEntity: guest
inversedBy: event
joinColumn:
name: event_id
referencedColumnName: id
- Един гост може да принадлежи към множество категории (manyToOne)
- Една категория ще има много гости (manyToOne)
- Гост може да присъства на много събития (manyToOne)
- Едно събитие може да има много придружители (manyToMany?)
- таблицата за присъствие (guest_event) трябва да бъде таблица за присъединяване?
Малко съм объркан относно ORM и кодирането на доктрината. Създаването на таблиците чрез SQL код или phpmyadmin ми се струва много по-лесно, но искам да вървя по трудния път! Документацията изглежда объркваща, защото всеки урок предлага различни неща, а секцията ORM на доктрината в книгата symfony2 няма пълен пример, а части от код.
Как мога да коригирам таблиците си, за да включват всички спецификации?
nullable=false
(по подразбиране еtrue
) за тези външни ключове, които не могат да бъдатnull
: docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/ - person gremo   schedule 07.08.2012