对于一个新项目,我正在使用网络商店。我有与植物细节有一对多关系的产品。植物细节有柱价格。我需要以第一个细节的价格订购产品。
如果我使用加入,我会以价格订购的所有产品,但我会为每个详细信息提供一个新产品。
我尝试了:
$products = $products->get();
$products = $products->sortBy(function ($product, $key) {
return $product->plantDetails()->first()->price; });
$products = $this->paginate($products, $perPage = 24, true);
}
$this->paginate
at:
public function paginate($items, $perPage = 15, $page = null, $options = []) {
$page = $page ?: (Paginator::resolveCurrentPage() ?: 1);
$items = $items instanceof Collection ? $items : Collection::make($items);
return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options);
}
,但是我没有在分页链接中获得当前页面。有人有任何想法吗?
如果您使用类似的东西:
$products = $products->sortBy(function ($product, $key) {
return $product->plantDetails()->first()->price; })->paginate(24)
paginate也会做到...但是我不明白您的意思是"需要在第一个细节的价格上订购产品?"
first()将从PlantDetails返回第一个对象,而第一个() ->价格价格将返回该对象的价格属性。
如果您使用查询构建器的加入方法,则不需要使用雄辩的关系。
可以这样的东西:
$products = DB::table('products')->
join('plantDetails','key','=','key') ->sortBy('price')->paginate(24);
键是产品和植物学之间的常见列。
希望它有帮助,