是否可以通过关系对选择结果进行排序?
我有一对多的关系。一个产品有多个项目。并且每个项目都有一个价格。我需要提取产品,但是产品订购必须符合商品价格
让我给你举个例子:
Product::with(['items'])->whereHas('items', function ($query) {
$query->orderBy('price', 'desc')
})->get();
就是这样。但是我需要按照商品内的价格对商品进行排序。
如果我的数据库具有以下内容:
product 1
item $ 1.2
item $ 2.0
product 2
item $ 3.0
item $ 0.5
product 3
item 1.0
我需要退货:
product 2
item $ 3.0
item $ 0.5
product 3
item 1.0
product 1
item $ 1.2
item $ 2.0
因为它被认为是每种产品的最低价商品。我该如何使用口才好呢?
答案 0 :(得分:0)
您可以在查询中尝试此操作吗?
Product::withCount(['items as ItemTotalAmount' => function($q){
$q->select(DB::raw("SUM(price)"));
}])
->with('items')
->orderBy('ItemTotalAmount', 'ASC')->get();
在此查询中,它首先对商品价格求和,然后将合计放入别名ItemTotalAmount
然后,我在orderBy
中使用ItemTotalAmount
对商品价格总计更高的产品进行了排序。
答案 1 :(得分:0)
Number1=bzcat $LOGDIR/$LOG_FORMAT | grep "<number>[0-2,4-9][0-2,4-9][0-2,4-9][0-2,4-9][0-2,4-9][0-2,4-9][0-2,4-9]"
通常用于查询具有附加whereHas
条件的关系存在。来自documentation:
如果您需要更多电源,则可以使用whereHas和orWhereHas 在您的查询中放置“ where”条件的方法。这些方法 允许您将自定义约束添加到关系约束。
在您的特定情况下,您只想订购热切的关系。因此,下面的方法应该可以解决问题。
where()