2017-01-20 30 views
0

我有一個模型公司,其中有許多工作。公司和工作代表MySQL表。鑑於Laravel 5 Eloquent模型,如何在一個查詢中更新關係中的所有模型?

簡體類在這裏:

class Company extends Eloquent 
{ 
    public function jobs() 
    { 
     return $this->hasMany('App\Models\Job'); 
    } 
} 

我想要的功能添加到這個類通過對每個作業is_active屬性設置爲0停用該公司的所有作業。通過查詢構建器,我可以通過一個簡單的更新查詢來完成此任務。有沒有辦法在一個查詢中使用模型/關係來完成此操作,而不是遍歷每個作業?

回答

2

你可以做到這一點。

然後,該方法是這樣的:

public function deactivateJobs() 
{ 
    return $this->jobs()->update(['is_active' => 0]); 
} 
2

據我所知,沒有理由不能在公司模型中使用Job模型。像這樣的東西適合你嗎?如果你打電話$company->jobs()它會返回查詢對象,你可以在上面鏈查詢方法

$company = Company::first(); // Or some $company where you want to update the jobs 
$company->jobs()->update(['is_active' => 0]); 

public function deactivateJobs() 
{ 
    App\Model\Job::where('company_id', $this->id)->update(['is_active' => false]); 
}