ホームページ  >  に質問  >  本文

Laravelを使用してリレーショナルテーブルの複数の列の文字列を検索します。

私は空間モデルと関係があります。

パブリック関数 user()
{
  return $this->belongsTo(User::class)->withTrashed();
}

私のコントローラーで、「users」テーブルの「first_name」列と「last_name」列から文字列を検索したいと考えています。

しかし、whereRelation に「or」条件を記述する構文が見つかりませんでした。

$クエリ = 新しいスペース();

$query = $query->with('user')->whereRelation('user', 'first_name', 'like', '%' . $request->search . '%');

whereRelation を使用してリレーショナル テーブルの複数の列内の文字列を検索するにはどうすればよいですか?

P粉590929392P粉590929392188日前242

全員に返信(1)返信します

  • P粉511749537

    P粉5117495372024-03-20 16:38:40

    ######オプション1。

    2 つのフィールドから個別に検索できます: Space::with('user')->whereHas('user', function ($query) use ($request) { $query->where('first_name', 'LIKE', '%' . $request->search . '%') ->orWhere('last_name', 'LIKE', '%' . $request->search . '%'); });

    オプション 2。 

    あなたが本当に望んでいるのは、2 つのフィールドを (間にスペースを入れて) 連結し、検索結果をそのフィールドと比較することだと思います。 Illuminate\Support\Facades\DB を使用します。 // ... Space::with('user')->whereHas('user', function ($query) use ($request) { $query->where( DB::raw('CONCAT(名, " ", 姓)'), 'のように'、 '%' . $request->search . '%' ); });

    返事
    0
  • キャンセル返事