如何在雄辩查询中检查存在关系?

时间:2017-11-15 14:11:11

标签: laravel eloquent relationship

我正在使用laravel多态关系。

cartable model:

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不存在。

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

return $data;

如果objectable_logs不存在,如何处理查询跳过行错误

1 个答案:

答案 0 :(得分:2)

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