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();