使用 Laravel whereRelation 在關聯表的多列中搜尋字串
P粉590929392
P粉590929392 2024-03-19 17:39:04
0
1
317

我與空間模型有關係,

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粉590929392
P粉590929392

全部回覆(1)
P粉511749537

選項 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 . '%'
    );
});
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板