Как узнать, существует ли объект из отношения в базе данных - PullRequest
6 голосов
/ 20 января 2010

Я использую Symfony с Doctrine.

У меня определены два класса: Персона и Студент , отношение один к одному.

Каждый Студент связан с Человеком , но не каждый Человек имеет отношение с Студентом .

Когда я звоню ...

$person->getStudent();

... Я всегда получаю и возражаю, независимо от того, что у некоторых лиц нет ученика. Как я могу узнать, что его нет ( Student ) в базе данных?

Спасибо.

Ответы [ 3 ]

9 голосов
/ 20 января 2010

Я думаю

$person->getStudent()->exists();

должно это сделать.По крайней мере, согласно документации Doctrine API .
Получаемый вами объект, вероятно, является какой-то пустой записью.

3 голосов
/ 27 февраля 2012

Вы также можете использовать Doctrine_Record::relatedExists(), который является своего рода дополнением к hasReference()

Вы используете его так:

if ($person->relatedExists('Student'))
2 голосов
/ 22 января 2010

Существует довольно новый метод (я думаю, начиная с Доктрины 1.2): $person->hasReference("Student"); возвращает логическое значение для того, есть ли фактически ученик, связанный с человеком, независимо от того, был ли он уже сохранен или нет в базе данных, и по желанию без создание новой студенческой записи. Этот вызов может быть подходящим в ситуациях, когда логике приложения не требуется постоянство связанного объекта, например, в то время как в рамках транзакции (я думаю). Надеюсь, что немного помогает, ура, Рафаэль

...