我的Job
模型中有以下关系函数:
public function resourceTypes(){
return $this->belongsToMany('ResourceType', 'job_requests');
}
public function resources(){
return $this->belongsToMany('Resource', 'jobs_resources')->withPivot('flow_type', 'resource_type_id');
}
我可以使用以下方法获取包含上述两种关系数据的对象:
$job = Job::findorfail($projectId);
$result = $job->with('resources.resourceTypes')->get();
我想在jobs_resources
数据透视表上放置一个where子句 - 特别是在列flow_type
上。
我该怎么做?
答案 0 :(得分:1)
尝试这样的事情:
$job = Job::with('resources' => function($q) {
$q->with('resourceTypes')->where('flow_type',2);
})->findorfail($projectId);
在上面,您只会获得flow_type = 2
答案 1 :(得分:0)
$result = DB::table('job')
->join('job_resources', 'job.id', '=', 'job_resources.job_id')
->join('job_requests', 'job_resources.request_id', '=', 'job_requests.id')
->where('job_resources.flow_type', '=', CONDITION)
->get();
您的表数据未在输入中清除,但此方法(查询构建器)应该可以正常工作
答案 2 :(得分:0)
我最终使用了以下声明:
Job::with(['resources' => function ($query){
$query->wherePivot('flow_type', '=', '1' );
}, 'resources.resourceTypes'])->where('id', $projectId)->firstOrFail();