我与空间模型有关系,
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在关系表的多列中搜索字符串?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
选项 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 . '%' ); });