使用Doctrine 2和Zend Framework创建关联时,如果关联的对象为空,例如对于entity-> associated_entity-> item如果associated_entity为空,即没有与原始实体关联的实体,那么我得到一个错误试图获取非对象的属性。
我知道这是因为我试图从空实体中获取该项目。
避免此错误的标准方法是什么?
我使用下面的代码来获取数据,但因为初始关联的实体将作为''返回,然后它无法从''
获取该项目public function __get($name)
{
if (isset($this->$name)){
return $this->$name;
} else {
return '';
}
}
答案 0 :(得分:0)
$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 ?>