Eloquent/Laravel-将WHERE子句放在具有链接关系的引用表上
我的Eloquent/Laravel-将WHERE子句放在具有链接关系的引用表上,laravel,laravel-4,eloquent,Laravel,Laravel 4,Eloquent,我的作业模型中有以下关系函数: public function resourceTypes(){ return $this->belongsToMany('ResourceType', 'job_requests'); } public function resources(){ return $this->belongsToMany('Resource', 'jobs_resources')->withPivot('flow_type', 'resou
作业
模型中有以下关系函数:
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\u resources
pivot表中放一个where子句,特别是在flow\u type
列中
我该怎么做?试试这样的方法:
$job = Job::with('resources' => function($q) {
$q->with('resourceTypes')->where('flow_type',2);
})->findorfail($projectId);
在上面,您将只获得flow\u type=2
$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();
输入的表数据不清楚,但此方法(查询生成器)应该可以工作我最后使用了以下语句:
Job::with(['resources' => function ($query){
$query->wherePivot('flow_type', '=', '1' );
}, 'resources.resourceTypes'])->where('id', $projectId)->firstOrFail();