Doctrine не возвращает NULL для значений NULL, когда вы используете методы get magic - PullRequest
0 голосов
/ 11 октября 2011

У меня есть приложение Symfony, сконфигурированное с Doctrine, и я разработал отношение один ко многим между двумя моделями: Item принадлежит Customer, что является псевдонимом для sfGuardUser.

Допустим, есть определенные ситуации, когда у товара нет покупателя.Чтобы проверить это, я пытаюсь сделать это сравнение:

$customer = $this->getCustomer();
if ( $customer ) {
  return $customer->getNbInvoices();
}
else {
  return 'n/a';
}

Однако $this->getCustomer() не возвращает null или любое другое «ложное» значение для сравнения, а внешний ключ имеет значение NULLв базе данных.

Как сравнить объект, который не хранит фактическое значение в базе данных?

Ответы [ 2 ]

2 голосов
/ 11 октября 2011

Я думаю, что $ this-> getCustomer () возвращает пустой экземпляр клиента doctrine_record.Вы можете проверить, есть ли у клиента идентификатор, или вы можете использовать метод класса doctrine_record ():

if($customer->exists()){
 code...
}

http://www.doctrine -project.org / api / orm / 1.2 / doctrine/doctrine_record.html#exists%28%29

0 голосов
/ 12 октября 2011

как насчет

if ($this->relatedExists('Customer') {
   return $this['Customer']->getNbInvoices();
} else {
  return 'n/a';
}
...