Работа с пустыми объектами ассоциации Doctrine 2
При создании ассоциации, использующей Doctrine 2 и Zend Framework, если связанный объект пуст, например, для entity-> related_ entity-> item, если связанное_источник пуст, т.е. У исходного объекта нет ассоциированного объекта, тогда я получаю Ошибка При попытке получить свойство не-объекта.
Я знаю, это потому, что я пытаюсь получить элемент из пустого объекта.
Каков стандартный способ избежать этой ошибки?
Я использую код ниже, чтобы получить данные, но поскольку исходный связанный объект будет возвращен как '', тогда он не сможет получить элемент из ''
public function __get($name)
{
if (isset($this->$name)){
return $this->$name;
} else {
return '';
}
}
вы можете попробовать:
$associatedEntity = $entity->associated_entity;
if ($associatedEntity) {
$item = $associatedEntity->item;
}
Редактировать:
Хорошо, тогда. Попробуйте поместить это в свой шаблон/представление:
<?php
$department = $instruction->department;
if ($department) {
echo $department->department;
}
?>
Изменить 2 (после небольшого обсуждения в чате: D):
Я думаю, что нет способа сказать PHP, чтобы остановить цепочку. Например, $object1->object2->attribute
Если вы напишете его таким образом, независимо от того, что вы положили в __get(), PHP предположит, что object2 является объектом и попытается извлечь запрошенный атрибут.
Самое простое решение - это что-то вроде этого:
<?php foreach ($this->data as $instruction) : ?>
<?php if ($dep = $instruction->department) echo $dep->department ?>
<?php endforeach ?>