私は空間モデルと関係があります。
パブリック関数 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 を使用してリレーショナル テーブルの複数の列内の文字列を検索するにはどうすればよいですか?
######オプション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 . '%' ); });