2015-12-24 61 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(); 

你的表中的數據是不是從你的輸入清晰,但這種方法(查詢生成器)應該工作