2017-11-15 1 views
1

多形関係laravelを使用しています。雄弁な質問にはどういう関係があるのか​​?

cartableモデル:

public function objectable() 
{ 
    return $this->morphTo(); 
} 

指示モデル:

public function cartable() 
{ 
    return $this->morphMany('PTA_OIMS\Cartable', 'objectable'); 
} 

レポートモデル:

public function reports() 
{ 
    return $this->morphMany('PTA_OIMS\Cartable', 'objectable'); 
} 

私の命令テーブルはinstruction_logsと呼ばれる追加の関連テーブルを持っています。

ただし、レポートの表では、この関係は存在しません。 オブジェクトがレポートされているとき、このクエリにはエラーがあります。 reports.report_logsは存在しないためです。 objectable_logsがラインエラーをスキップ存在しなかった場合は、クエリを処理する方法を

$data = Cartable::where('id', '=', $cartableID) 
    ->with('objectable') 
    ->with('objectable.objectable_logs.attachment') //line error 
    ->with('box.position') 
    ->with('box.assign.staff') 
    ->first(); 

return $data; 

+0

'if'文?その後もチェーンを続けることができます –

答えて

1
$data = Cartable::with([ 
    'objectable', 
    'objectable.objectable_logs.attachment', 
    'box.position', 
    'box.assign.staff' 
])->find($cartableID); 

return $data; 

attachmentobjectable_logsテーブルの列であれば、それは次のようにする必要があります:

$data = Cartable::with([ 
    'objectable', 
    'objectable.objectable_logs:objectable_id,attachment', 
    'box.position', 
    'box.assign.staff' 
])->find($cartableID); 

return $data;