【发布时间】:2017-08-02 10:12:18
【问题描述】:
我有以下 SQL 查询:
return User::where("users.id", $id)
->select(array('rating.rate', User::raw('count(offers.id) AS ofrs, count(announcements.id) as appts')))
->join('announcements', 'users.id', '=', 'announcements.user_id')
->join('offers', 'users.id', '=', 'offers.user_id')
->join('rating', 'users.id', '=', 'rating.user_id')
->group_by('ofrs')
->get();
它给了我一个错误:
Builder.php 第 2508 行中的 BadMethodCallException:调用未定义 方法 Illuminate\Database\Query\Builder::group_by()
为什么不按组工作?
我也尝试过:
return User::where("users.id", $id)
->selectRaw('rating.rate, count(offers.id) AS ofrs, count(announcements.id) as appts')
->groupBy('appts')
->groupBy('ofrs')
->join('announcements', 'users.id', '=', 'announcements.user_id')
->join('offers', 'users.id', '=', 'offers.user_id')
->join('rating', 'users.id', '=', 'rating.user_id')
->get();
结果:
SQLSTATE[42000]: Syntax error or access violation: 1056 Can't group on 'appts'
我已经直接用SQL写了SQL查询:
select rating.rate, COUNT(offers.id) AS ofrs, COUNT(announcements.id) as appts from `users` left join `announcements` on `users`.`id` = `announcements`.`user_id` left join `offers` on `users`.`id` = `offers`.`user_id` left join `rating` on `users`.`id` = `rating`.`user_id` where `users`.`id` = 1
它有效,按型号不:
return User::where("users.id", $id)
->selectRaw('rating.rate, COUNT(offers.id) AS ofrs, COUNT(announcements.id) as appts')
->leftJoin('announcements', 'users.id', '=', 'announcements.user_id')
->leftJoin('offers', 'users.id', '=', 'offers.user_id')
->leftJoin('rating', 'users.id', '=', 'rating.user_id')
->get();
这项工作:
return User::where("users.id", $id)
->selectRaw('rating.rate, COUNT(offers.id) AS ofrs, COUNT(announcements.id) AS appts')
->leftJoin('announcements', 'users.id', '=', 'announcements.user_id')
->leftJoin('offers', 'users.id', '=', 'offers.user_id')
->leftJoin('rating', 'users.id', '=', 'rating.user_id')
->groupBy('rating.rate')
->get();
【问题讨论】:
-
groupBy('ofrs')不是group_by -
我试过
groupBy('ofrs') -
您是否在您的用户模型中为
announcements、offers和rating设置了关系? -
相对用户?
-
但是 SQL 查询中的问题,而不是模型中的问题
标签: laravel laravel-5.4