2015-12-24 28 views
1

我在Job模型下面的关系功能:雄辩/ Laravel - 把一个WHERE子句上的参考表采用链式关系

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

我结束了使用以下语句:

Job::with(['resources' => function ($query){ 
    $query->wherePivot('flow_type', '=', '1'); 
}, 'resources.resourceTypes'])->where('id', $projectId)->firstOrFail(); 
1

尝试这样:

$job = Job::with('resources' => function($q) { 
    $q->with('resourceTypes')->where('flow_type',2); 
})->findorfail($projectId); 

在上面,你将只能得到那些资源与flow_type = 2

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(); 

你的表中的数据是不是从你的输入清晰,但这种方法(查询生成器)应该工作