2012-03-28 8 views
0

Doctrine 2とZend Frameworkを使用して関連付けを作成する場合、関連付けられたオブジェクトが空の場合などです。 entity_> associated_entity-> itemの場合、associated_entityが空の場合、つまり元のエンティティに関連するエンティティがない場合、非オブジェクトのプロパティを取得しようとするとエラーが発生します。空のDoctrine 2関連オブジェクトの操作

これは、空のエンティティからアイテムを取得しようとしているためです。

このエラーを回避するための標準的な方法は何ですか?私は、データを取得するが、初期に関連するエンティティが

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

答えて

0

「「それは、その後からアイテムを取得することはできません」」として返されますので、あなたが試みることができる以下のコードを使用しています

$associatedEntity = $entity->associated_entity; 

if ($associatedEntity) { 
    $item = $associatedEntity->item; 
} 

編集:その後、

OK。テンプレート/ビューでこれを入れてみてください:

(チャット中の小さな議論の後:D):
<?php 
$department = $instruction->department; 

if ($department) { 
    echo $department->department; 
} 
?> 

編集2

私は停止するPHPに伝える方法がないと思います鎖。例えば。 $object1->object2->attribute __get()に何を入れても、PHPはobject2がオブジェクトであるとみなし、要求された属性を取得しようとします。

最も簡単な解決策は、そのようなものになるだろう:

<?php foreach ($this->data as $instruction) : ?> 
    <?php if ($dep = $instruction->department) echo $dep->department ?> 
<?php endforeach ?> 
+0

どうでしょうドクトリン2エンティティで、この作品? – Quanano

+0

いくつかのコードを表示できますか? – aletzo

+0

"オブジェクトでないオブジェクトのプロパティを取得しようとしています"というエラーはDoctrine 2に関連していませんが、OOP関連のものです。 – aletzo