2016-10-17 13 views
0

私はLaravelにクエリconstuctorを使用:モデルaccountの接続は以下の通りですので、クエリLaravelで関連するテーブルを検索するには?

$query->where('account.email', 'like', '%' . $request->email . '%'); 

をしかし、それは動作しません:

$this->users = User::where(function ($query) 
     use ($request) { 

     $query->where('account.email', 'like', '%' . $request->email . '%'); 

    })->with('account')->get(); 

だから、私は、コンストラクタ内の行をフィルタしてみてください。

クエリコンストラクタ内でwhereの条件を関連するモデルのaccountでどうやって使うことができますか?

答えて

0

あなたは、関連するモデルに基づいてクエリを実行する場合は、詳細についてはwhereHas('RELATED_MODEL_NAME')

$this->users = User::with('account')->whereHas('account', function($query) use ($request) { 
    $query->where('email', 'like', '%' . $request->email . '%'); 
})->get(); 

を使用する必要が救助へQuerying Relationship Existence

1

whereHas句を確認してください。それはあなたの関係にクエリ制約を追加することを可能にします。

$this->users = User::query() 
    // Relational query with constraint 
    ->whereHas('account', function ($query) use ($request) 
    { 
     // The query here is scoped to account, 
     // hence you don't need account.email 
     $query->where('email', 'like', '%' . $request->email . '%'); 
    }) 
    // Still need to eager load 'account' relation 
    ->with('account') 
    ->get(); 
関連する問題