我正尝试在po网站中使用where
进行搜索。
我的代码:
public function globalSearch($subject) {
$users = User::where('username', 'LIKE', '%'.$subject.'%')->get();
$users = User::where('steam_id', 'LIKE', '%'.$subject.'%')->get();
$results = array();
foreach ($users as $user) {
$results[$user->username] = url('player/'.$user->slug);
}
return $results;
}
但是它只是在搜索steam_id,如果我输入用户名,它什么也找不到。我认为问题是,我需要在一行中使用多个where
。抱歉,如果您不明白我的意思,但是我该如何在多个字段中使用1 where
?
答案 0 :(得分:1)
下面两行覆盖了您的搜索。因此,请删除这两行并按如下所示编写。
$users = User::where('username', 'LIKE', '%'.$subject.'%')->get();
$users = User::where('steam_id', 'LIKE', '%'.$subject.'%')->get();
用户使用以下代码。
$users = User::where('username', 'LIKE', '%'.$subject.'%')->orwhere('steam_id', 'LIKE', '%'.$subject.'%')->get();
答案 1 :(得分:1)
您正在用第二条语句覆盖$users
。如果您希望同时使用两个where
子句,则可以将数组用作选项:
$users = User::where([
['username', 'LIKE', '%'.$subject.'%'],
['steam_id', 'LIKE', '%'.$subject.'%']
])->get();
有关Laravel where clauses的更多信息。
答案 2 :(得分:0)
这会做这项工作吗?
public function globalSearch($subject)
{
return User::where('username', 'LIKE', '%'.$subject.'%')->orWhere('steam_id', 'LIKE', '%'.$subject.'%')->get();
}
理想情况下,按表索引分组不会得到意外结果。
答案 3 :(得分:0)
您可以使用User::where()
内部的数组,就像@kerbholz正确回答状态一样。或者,您可以像这样进行链接:
User::where('foo', 1)->where('bar', false)->get();
与上面的答案得出的结果相同,但在我看来通常更易读。