У меня есть таблица A, которая ссылается на таблицу B.доктрина картирование не найден случай
Редактировать: Используется двигатель базы данных MyISAM.
Доктрина картирование работает как шарм, кроме случаев, когда у меня есть недопустимый случай в БД, где ссылается ID в таблице А на самом деле не существует в таблице В.
Итак, когда вы выполняете этот код:
$objectB = $objectA->getObjectB();//with lazy load
Вы фактически получаете объект объекта $ objectB, который является не имеет значения. Итак! Empty ($ objectB) пройдет.
И когда вы пытаетесь получить доступ к любому свойству $ objectB, как:
$ objectB-> GetName();
Вы получаете Объект не найден Исключением. Вы не можете предсказать в своем коде, что $ objectB на самом деле не существует и что нет свойства Name для объекта $ objectB.
$ objectB должен фактически иметь значение null, но этого не происходит.
Hibernate фактически картирование свойства не обретенные = игнорировать который устанавливает отсутствующую объект NULL вместо того, чтобы установить его в объект прокси. Есть ли у Доктрины что-то подобное?
PS. Конечно, вы всегда можете поймать сущность не найденное исключение и поиграть с этим. Или вы можете сопоставить фактическое поле objectB_ID в таблице A, но это не 100% -ные чистые решения.
Надеюсь, у кого-то есть ответ.
Спасибо
Если вы ожидаете объект из геттера и возвращает нуль, может быть, вы должны проверить на нуль первым. Это немного сложнее, потому что Doctrine создает для вас объекты-прокси, но принцип тот же. – hafichuk
Это точно мой вопрос. Как вы проверяете для NULL прокси-объект, который не имеет физической записи в БД? – Goran