Laravel 5.8:Where anulls和Where has effect
我正在尝试做一个简单的搜索功能。为此,我实现了以下查询:Laravel 5.8:Where anulls和Where has effect,laravel,eloquent,Laravel,Eloquent,我正在尝试做一个简单的搜索功能。为此,我实现了以下查询: Profile::whereHas('accounts', function ($query) use ($id) { $query->where('user_id', $id); }) ->where('username', 'LIKE', "%{$search}%") ->paginate(20); whereHas选择具有$id的用户拥有的配置文件 然后,使用wher
Profile::whereHas('accounts', function ($query) use ($id) {
$query->where('user_id', $id);
})
->where('username', 'LIKE', "%{$search}%")
->paginate(20);
选择具有whereHas
的用户拥有的配置文件李>$id
- 然后,使用
来确定搜索是否与数据库中的某个用户名匹配where
- 最后,我们对结果进行分页
或where
时,问题就出现了:
Profile::whereHas('accounts', function ($query) use ($id) {
$query->where('user_id', $id);
})
->where('username', 'LIKE', "%{$search}%")
->orWhere('fullname', 'LIKE', "%{$search}%")
->paginate(20);
我希望查询分析搜索是否与用户名和/或全名匹配。当我添加
或where
时,但是whereHas
不起作用,结果来自所有用户。您需要这样做:
Profile::whereHas('accounts', function ($query) use ($id) {
$query->where('user_id', $id);
})
->where(function($query) use ($search) {
$query->where('username', 'LIKE', "%{$search}%")
->orWhere('fullname', 'LIKE', "%{$search}%");
})
->paginate(20);