2017-01-20 3 views
0

私は多くの仕事を持つモデルの会社を持っています。 CompanyとJobはmysqlテーブルを表します。ここLaravel 5 Eloquentモデルでは、1つのクエリで関係のすべてのモデルを更新するにはどうすればよいですか?

簡体クラス:

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

私は0に各ジョブにis_activeプロパティを設定することで、すべての会社の仕事を無効にするには、このクラスに機能を追加したいです。クエリビルダを使用すると、簡単な更新クエリでこれを実現できます。すべてのジョブを反復処理するのではなく、1つのクエリでモデル/リレーションシップを使用してこれを行う方法はありますか?

答えて

2

あなたはこれを行うことができます。

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

をあなたはそれがクエリオブジェクトを返すと、その上にすることができますチェーンのクエリメソッドう$company->jobs()を呼び出した場合。

その後方法は次のようになります。

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

私の知る限り、会社のモデル内でジョブモデルを使用できない理由はありません。このようなものがあなたのために働くだろうか?

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