Работаю над своим небольшим проектом, использую Laravel и Doctrine как основную ORM. Doctrine была выбрана только с целью получить опыт работы с ней. Для миграций, принял решение использовать встроенные в laravel средства.
Собственно вопрос: когда определяешь Entity, обязательно ли указывать опции в аннотациях, которые были заданы в миграциях(тип, длины строки, nullable ...)?
Как я понял: эти опции используются только при генерации таблиц. Или все же, doctrine как-то контролирует целостность в runtim'e?
Она контроллирует, допустим у вас есть модель User с полем $name, ассертами указано, что оно не должно быть пустым и представляет собой строку. Теперь при попытке записать туда пустую строку или запихнуть массив, вы получите Doctrine\DBAL\Exception, которое можно перехватить и выдать красивую ошибку о неверных данных
Сборка персонального компьютера от Artline: умный выбор для современных пользователей