Работа с пустыми объектами ассоциации Doctrine 2

104
4

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

Я знаю, это потому, что я пытаюсь получить элемент из пустого объекта.

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

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

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

спросил(а) 2012-03-28T12:40:00+04:00 8 лет, 6 месяцев назад
1
Решение
114

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

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

ответил(а) 2012-03-28T12:55:00+04:00 8 лет, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема