使用 Laravel whereRelation 在关系表的多列中搜索字符串
P粉590929392
P粉590929392 2024-03-19 17:39:04
0
1
310

我与空间模型有关系,

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 . '%'
    );
});
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!