我试图将这个查询转换成Laravel 5.4中的查询生成器:
SELECT oc.id, oc.name, oat.user_id, p.first_name, p.last_name FROM oauth_clients oc LEFT JOIN oauth_access_tokens oat ON oc.id = oat.client_id JOIN users u on u.id = oat.user_id JOIN people p on p.id = u.person_id WHERE oc.revoked = false AND oc.password_client = true GROUP BY oc.id, oat.user_id并且获得这个错误barf: Argument 1 passed to Illuminate\Database\Connection::prepareBindings() must be of the type array, string given, called in /var/www/html/source/luniverse/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 648 and defined这是我的尝试(许多人之一):
$tokens = DB::select('oc.id','oc.name','oat.user_id','p.first_name','p.last_name') ->from('oauth_clients as oc') ->leftJoin('oauth_access_tokens as oat', 'oc.id', '=', 'oat.client_id') ->join('users as u', 'u.id', '=', 'oat.user_id') ->join('people as p', 'p.id', '=', 'u.person_id') ->where('oc.revoked', '=', 'false') ->where('oc.password_client', '=', 'true') ->groupBy('oc.id') ->groupBy('oat.user_id') ->get();数据库配置设置为严格模式,但这并不完全可以解释特定的错误。 原始查询在DB gui中运行良好。
I'm trying to convert this query to query builder in Laravel 5.4:
SELECT oc.id, oc.name, oat.user_id, p.first_name, p.last_name FROM oauth_clients oc LEFT JOIN oauth_access_tokens oat ON oc.id = oat.client_id JOIN users u on u.id = oat.user_id JOIN people p on p.id = u.person_id WHERE oc.revoked = false AND oc.password_client = true GROUP BY oc.id, oat.user_idAnd getting this error barf: Argument 1 passed to Illuminate\Database\Connection::prepareBindings() must be of the type array, string given, called in /var/www/html/source/luniverse/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 648 and defined This is my attempt at it (one of many):
$tokens = DB::select('oc.id','oc.name','oat.user_id','p.first_name','p.last_name') ->from('oauth_clients as oc') ->leftJoin('oauth_access_tokens as oat', 'oc.id', '=', 'oat.client_id') ->join('users as u', 'u.id', '=', 'oat.user_id') ->join('people as p', 'p.id', '=', 'u.person_id') ->where('oc.revoked', '=', 'false') ->where('oc.password_client', '=', 'true') ->groupBy('oc.id') ->groupBy('oat.user_id') ->get();The database config is set to strict mode, but that doesn't exactly seem to explain that particular error. The raw query runs fine in a DB gui.
最满意答案
改变groupby代码
$tokens = DB::select('oc.id','oc.name','oat.user_id','p.first_name','p.last_name') ->from('oauth_clients as oc') ->leftJoin('oauth_access_tokens as oat', 'oc.id', '=', 'oat.client_id') ->join('users as u', 'u.id', '=', 'oat.user_id') ->join('people as p', 'p.id', '=', 'u.person_id') ->where('oc.revoked', '=', 'false') ->where('oc.password_client', '=', 'true') ->groupBy('oc.id','oat.user_id') ->get();Change the groupby code like
$tokens = DB::select('oc.id','oc.name','oat.user_id','p.first_name','p.last_name') ->from('oauth_clients as oc') ->leftJoin('oauth_access_tokens as oat', 'oc.id', '=', 'oat.client_id') ->join('users as u', 'u.id', '=', 'oat.user_id') ->join('people as p', 'p.id', '=', 'u.person_id') ->where('oc.revoked', '=', 'false') ->where('oc.password_client', '=', 'true') ->groupBy('oc.id','oat.user_id') ->get();更多推荐
发布评论