Ответ 1
Проблема
Doctrine выбрасывает это исключение, если оно не находит связанного объекта. Кажется излишним сказать это, но на самом деле это важно.
Это означает, что он может найти идентификатор, связанный с ним, но сделанная доктрина запроса не соответствует никакому результату.
Я предполагаю, что ваша таблица базы данных (фактически таблица ссылок) submission.authors
содержит идентификаторы 0
вместо NULL
.
С такой доктриной считается, что IS автор с идентификатором 0
, и поэтому не может его найти.
Что произойдет
submission.authors
всегда существует. Это неинициализированный прокси-сервер доктрины.
var_dump($submission->getAuthors());
Покажет вам, что именно содержит submission.authors
На данный момент запросов нет. Он просто возвращает PersistentCollection
с флагом isInitialized
к false.
Исключение возникает, когда вы пытаетесь получить из него свойство
foreach ($submission->getAuthors() as $author) {
}
При выполнении этой доктрины будет проверяться, инициализируется ли getAuthors
. Если нет, он выполнит следующий запрос
SELECT <stuffs> FROM authors WHERE id = 0;
Который не возвращает совпадения и выкинет EntityNotFound
Исключение
Fix
Вы должны установить свою строку id по умолчанию на NULL
и сделать запрос для обновления всех 0
до NULL
.
При этом вы можете легко протестировать submission.authors
с помощью is not null
Doctrine не будет запускать какой-либо запрос, если найдет NULL