我有一个ajax调用,它返回一个数组:
$reports = Report::where('submission_id', $submissionID)
->where('status', 'pending')
->get(['description','rule']);
return [
'message' => 'Success.',
'reports' => $reports,
];
从这个数组中,我只想返回字段'description'和'rule'。但是,我也想从owner()
模型返回Report
关系。我该怎么办?我是否必须加载关系并进行某种数组推送,还是有一个更优雅的解决方案?
答案 0 :(得分:0)
您可以使用with()
来寻求与负载相关的模型
$reports = Report::with('owner')
->where('submission_id', $submissionID)
->where('status', 'pending')
->get(['id','description','rule']);
请注意,您需要将id
中的get()
包括在报表模型中,以映射(所有者)相关模型
答案 1 :(得分:0)
您可能会与 Reports 和 owners 表(如下所示)建立一对多关系
报告模型
public function owner() {
return $this->belongsTo('App\Owner');
}
所有者模型
public function reports() {
return $this->hasMany('App\Report');
}
您的控制器代码
$reports = Report::with('owner')->
where('submission_id', $submissionID)->where('status', 'pending')->get()
return [
'message' => 'Success.',
'reports' => $reports,
];
答案 2 :(得分:0)
这就是我最终要去的事情:
$reports = Report::
with(['owner' => function($q)
{
$q->select('username', 'id');
}])
->where('submission_id', $submissionID)
->where('status', 'pending')
->select('description', 'rule','created_by')
->get();
其他答案是正确的,我需要加载用户ID。但是我必须使用一个函数才能工作。