分页会产生错误

时间:2017-07-27 20:25:31

标签: laravel laravel-5.4

我试图对搜索进行分页以返回18个项目的页面。以前我有这段代码工作代码:

std::promise

我在文档中添加了paginate,如文档

所示
    $productsQuery = Product::where('approved', '=', 1)->leftJoin('reviews', 'reviews.products_id', '=', 'products.id')->select('products.*', DB::raw('AVG(ratings) as ratings_average' ))->groupBy('id')->orderBy('ratings_average', 'DESC');

并收到错误

    $productsQuery = Product::where('approved', '=', 1)->leftJoin('reviews', 'reviews.products_id', '=', 'products.id')->select('products.*', DB::raw('AVG(ratings) as ratings_average' ))->groupBy('id')->orderBy('ratings_average', 'DESC')->paginate(18);

关于如何对声明进行分页的任何想法?

2 个答案:

答案 0 :(得分:0)

不一定是造成问题的分页,错误是由您的小组造成的。

您应该将表名/别名放在id EG之前:

 $productsQuery = Product::where('approved', '=', 1)->leftJoin('reviews', 'reviews.products_id', '=', 'products.id')->select('products.*', DB::raw('AVG(ratings) as ratings_average' ))->groupBy('product.id OR reviews.id')->orderBy('ratings_average', 'DESC');

请参阅上面的修改后的声明,请注意,粘贴它的副本不会起作用,您将看到更改该groupby参数。

你也应该访问Eloquent上的文档,你已经以一种你正在与laravel战斗的方式接近了这个问题。我建议对使用的ORM进行更严格的控制。

祝你好运!

答案 1 :(得分:0)

错误在这里非常自我解释:

Column 'id' in group statement is ambiguous

所以你需要制作

`groupBy('id')` 

更明确,通过告诉您要用于分组的id(从哪个表中,您的查询中使用的每个表功能id列)。