В ходе изучения симфонии возникло несколько вопросов, с которыми не смог разобраться. Хочу получить помощь от матерых коллег.
1) В документации советуют ко всем полям сущности прописывать гетеры/сетеры. Я не понимаю зачем, если в php есть
__call(). Ситуация, когда нужно сделать индивидуальную обработку поля - ясна, но зачем в большинстве случаев засорять класс однотипными методами - мне не понятно. В чем смысл?
2) Сделал внешний ключ от адреса к пользователю, указал действия каскадом, связь в PMA отображается, но родительский элемент не желает удаляться т.к. есть дочерние. В чем проблема?
/**
* @ORM\ManyToOne(targetEntity="Customer", cascade={"remove"}, fetch="EAGER")
* @ORM\JoinColumn(name="customer_id", referencedColumnName="customer_id")
*/
protected $customerId;
3) При сохранении адреса, фреймворк требует в поле $customerId передавать объект типа Customer. Я понимаю, что он скорее всего запросит id у объекта, но заче грузить в память целый объект, если я, например, заранее знаю его id? А если я хочу множество адресов переработать, то для каждого грузить его пользователя - странно выходит. Можно как-то исправить, чтобы требовалось скалярное значение, не убирая связи между сущностями?
4) Как сделать ORM-аннотацию, чтобы поле типа "datetime" заполнялось текущими датой-временем? Я написал так:
/**
* @ORM\Column(type="datetime", name="inserted_at", options={"default" : "CURRENT_TIMESTAMP"})
*/
, но сохранение БД не происходит т.к. поле не может быть NULL. Гугл подсказал варианты в конструкторе или сеттере заполнять самому, но странно как-то делать то, что может сделать БД сама.
Спасибо всем неравнодушным ))