Laravel秩序通过关系雄辩



对于一个新项目,我正在使用网络商店。我有与植物细节有一对多关系的产品。植物细节有柱价格。我需要以第一个细节的价格订购产品。

如果我使用加入,我会以价格订购的所有产品,但我会为每个详细信息提供一个新产品。

我尝试了:

$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);

键是产品和植物学之间的常见列。

希望它有帮助,

最新更新