0
0

More than 1 year has passed since last update.

Laravelで、リレーション先のテーブルの条件で検索する

Posted at

Laravelで、リレーション先のテーブルの条件で検索するには、大きく分けて2パターンある。

①クエリビルダを使う
②Eloquentを使う

クエリビルダを使う方法は、直感的にわかりやすいが、joinを使ってテーブルを結合してから検索文を書くので、コードが冗長になるので、ここではEloquentを使った書き方のみ書く。

EloquentのwhereHas()を使って、リレーション先で条件検索

index.php
$query = Article::query();
$penname = $request->penname;
$query->with(['profile'])->whereHas('profile', function ($q) use ($penname) {
   $q->where('profiles.penname', 'like', '%' . $penname. '%');
});

第一引数にリレーションメソッド名を書き、第二引数にコールバック関数を書く。
コールバック関数内で、条件検索文を書く。

with()は、リレーション先を明示するために必要。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0