在 laravel 中查询的位置
Where In query in laravel
我正在尝试构建这个具有 where In 的查询。但是,当我 运行 它时,我得到了错误。
$tickets = DB::table('ticket_details')
->join('client_details', 'client_details.client_id', '=', 'ticket_details.client_id')
->select();
if($archived){
$tickets->where('ticket_details.is_archived', '=', '1');
} else {
$tickets->where('ticket_details.is_archived', '=', '0');
}
if($user->hasRole('ABM')) {
$tickets->whereIn('client_details.client_area', $regions);
}
但是这个查询给我这个错误:
Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, object given, called in
/Applications/XAMPP/xamppfiles/htdocs/levigo/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php on line 313 and defined
这里的whereIn方法有什么问题?/
$regions 变量似乎不是数组(无法从您粘贴的代码中猜测)可能是 Illuminate\Support\Collection 或 Illuminate\Database\Eloquent\Collection
希望这对您有所帮助
在执行这段代码之前,您应该检查 $regions 是否是一个数组。当试图从数据库中获取数组但没有找到结果时,对象未初始化为数组。
$tickets = DB::table('ticket_details')
->join('client_details', 'client_details.client_id', '=','ticket_details.client_id')
->select();
$tickets->where('ticket_details.is_archived', '=', $archived ? '1' : '0');
if($user->hasRole('ABM')) {
if( count( $regions ) ) $tickets->whereIn('client_details.client_area', $regions);
}
我正在尝试构建这个具有 where In 的查询。但是,当我 运行 它时,我得到了错误。
$tickets = DB::table('ticket_details')
->join('client_details', 'client_details.client_id', '=', 'ticket_details.client_id')
->select();
if($archived){
$tickets->where('ticket_details.is_archived', '=', '1');
} else {
$tickets->where('ticket_details.is_archived', '=', '0');
}
if($user->hasRole('ABM')) {
$tickets->whereIn('client_details.client_area', $regions);
}
但是这个查询给我这个错误:
Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, object given, called in
/Applications/XAMPP/xamppfiles/htdocs/levigo/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php on line 313 and defined
这里的whereIn方法有什么问题?/
$regions 变量似乎不是数组(无法从您粘贴的代码中猜测)可能是 Illuminate\Support\Collection 或 Illuminate\Database\Eloquent\Collection
希望这对您有所帮助
在执行这段代码之前,您应该检查 $regions 是否是一个数组。当试图从数据库中获取数组但没有找到结果时,对象未初始化为数组。
$tickets = DB::table('ticket_details')
->join('client_details', 'client_details.client_id', '=','ticket_details.client_id')
->select();
$tickets->where('ticket_details.is_archived', '=', $archived ? '1' : '0');
if($user->hasRole('ABM')) {
if( count( $regions ) ) $tickets->whereIn('client_details.client_area', $regions);
}