php - 如何从类别 laravel 中获取产品的最低价格
问题描述
我有具有关系的模型类别:
public function attribute()
{
return $this->hasMany('App\Models\Attribute');
}
public function children()
{
return $this->hasMany(self::class, 'parent_id');
}
public function products()
{
return $this->hasMany('App\Models\Product');
}
我如何从儿童类别中获得产品的最低价格(如果存在)。
这段代码:
$category = Category::whereId('id', $categoryId)->first();
if($category->children) $products = $category->children()->products()->min('price'); }
不工作。我得到错误:
Method Illuminate\Database\Query\Builder::products does not exist. (View:
解决方案
您的方法的返回值children()
是一个集合,因此您不能在该集合上调用产品。您要么必须迭代集合并获得每个类别的最低价格,要么加入您的产品,将它们分组并获得每个组的最低价格:
$childrenWithMinPrices = $category->children()
->join('products', 'products.category_id', '=', 'categories.id')
->select('categories.*', DB::raw('MIN(products.price) AS minPrice'))
->groupBy('categories.id')
->get();
您可能必须更改上述查询中的表名和列名以适合您的架构。
注意:我把这个写在我的脑海里,我可能会弄错语法。如果有任何问题,请告诉我。
推荐阅读
- android - Android Workmanager 在固定进程中运行作业
- azure - GetBlockBlobReference 未提供文件夹路径详细信息
- jquery - jQuery密码验证强度计栏
- maven-3 - 使用 Maven 从第一个属性文件创建第二个属性文件
- sql - SQL Server 2012 - 检索日期在两个日期之间的值
- javascript - 协议检查未从先前协议检查的成功回调中调用
- python - 遇到python错误
- django - 如何从 Django 中的基本模板获取输入?
- php - 子菜单页面未显示在管理仪表板上
- excel - 以单击另一个单元格为条件突出显示单元格