Работа с пустыми объектами ассоциации Doctrine 2 - PullRequest
0 голосов
/ 28 марта 2012

При создании ассоциации с использованием Doctrine 2 и Zend Framework, если связанный объект пуст, например, для entity-> related_entity-> item, если related_entity пуст, то есть нет ассоциированной сущности с исходной сущностью, тогда я получаюошибка Попытка получить свойство необъекта.

Я знаю, это потому, что я пытаюсь получить элемент из пустой сущности.

Каким стандартным способом избежать этой ошибки?

Я использую приведенный ниже код для получения данных, но поскольку исходный связанный объект будет возвращен как '', то он не сможет получить элемент из ''

public function __get($name) 
{
    if (isset($this->$name)){
        return $this->$name;
    } else {
        return '';
    }
}  

1 Ответ

0 голосов
/ 28 марта 2012

вы можете попробовать:

$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 ?>
...