我试图对搜索进行分页以返回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);
关于如何对声明进行分页的任何想法?
答案 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
列)。