Php DB查询:选择行where和where
我想做一个搜索栏,但将搜索结果限制为共享同一公司的用户。 此功能工作正常:Php DB查询:选择行where和where,php,mysql,database,laravel,Php,Mysql,Database,Laravel,我想做一个搜索栏,但将搜索结果限制为共享同一公司的用户。 此功能工作正常: public function search(Request $request) { if ($user = Sentinel::check()) { $users = User ::where('first_name', 'like', '%' . $request->text . '%') ->orWh
public function search(Request $request) {
if ($user = Sentinel::check()) {
$users = User
::where('first_name', 'like', '%' . $request->text . '%')
->orWhere('last_name', 'like', '%' . $request->text . '%')
->limit(2)
->get()
->map(function ($item) {
$item['url'] = route('user.single', ['id' => $item->id]);
$item['title'] = $item['first_name'] . ' ' . $item['last_name'];
$item['type'] = 'User';
return $item;
})
->toArray();
}
}
但我想补充一个条件:
->andWhere ('companies_id', 1)
“和”必须使用相同的结构
e、 g:where'companys_id'、'='、'1'您只需添加where子句即可
public function search(Request $request) {
if ($user = Sentinel::check()) {
$users = User
::where('first_name', 'like', '%' . $request->text . '%')
->where('companies_id', 1)
->orWhere('last_name', 'like', '%' . $request->text . '%')
->limit(2)
->get()
->map(function ($item) {
$item['url'] = route('user.single', ['id' => $item->id]);
$item['title'] = $item['first_name'] . ' ' . $item['last_name'];
$item['type'] = 'User';
return $item;
})
->toArray();
}
}
这将导致此查询
WHERE `firstname` LIKE '%?%'
AND `company_id` = 1
OR `lastname` LIKE '%?%'
但我认为应该是这样
WHERE `company_id` = 1
AND (
`firstname` LIKE '%?%'
OR `lastname` LIKE '%?%'
)
因此,这些答案应该是正确的:我认为您的查询应该可以很好地处理这个问题
$users = User::where(function($query) use ($request) {
$query->where('first_name', 'like', '%' . $request->text . '%')
->orWhere('last_name', 'like', '%' . $request->text . '%');
})
->where('companies_id', '=', 1)
->limit(2)
->get()
->map(function ($item) {
$item['url'] = route('user.single', ['id' => $item->id]);
$item['title'] = $item['first_name'] . ' ' . $item['last_name'];
$item['type'] = 'User';
return $item;
})
->toArray();
}这很简单
$select = DB::('table_name')->where('column_name','value')
->where('cloumn_name1','value')
->get();
是什么阻止了你这么做?->哪里是不可能的选择…只需在orWhere语句后添加:->where'comanies_id',1有什么问题?天哪,太明显了。。。谢谢
$select = DB::('table_name')->where('column_name','value')
->where('cloumn_name1','value')
->get();