我與空間模型有關係,
public function user() { return $this->belongsTo(User::class)->withTrashed(); }
在我的控制器中,我想從「users」表中的「first_name」和「last_name」兩列中搜尋字串。
但是我沒有找到在whereRelation中寫「或」條件的語法。
$query = new Space(); $query = $query->with('user')->whereRelation('user', 'first_name', 'like', '%' . $request->search . '%');
如何使用whereRelation在關係表的多列中搜尋字串?
P粉5117495372024-03-20 16:38:40
選項 1。 您可以分別從兩個欄位中搜尋:
Space::with('user')->whereHas('user', function ($query) use ($request) { $query->where('first_name', 'LIKE', '%' . $request->search . '%') ->orWhere('last_name', 'LIKE', '%' . $request->search . '%'); });
選項 2。 我猜您真正想要的是將兩個字段連接在一起(中間有一個空格),然後將您的搜索與該字段進行比較:
use Illuminate\Support\Facades\DB; // ... Space::with('user')->whereHas('user', function ($query) use ($request) { $query->where( DB::raw('CONCAT(first_name, " ", last_name)'), 'LIKE', '%' . $request->search . '%' ); });