我有类别(类别型号)。
每个类别都有子类别(通过类别模型字段parent_id
)。
每个子类别都有产品(通过产品字段category_id
)。
我需要为每个父类别获取最新添加的产品。理想情况下,它应该采取一个请求。或者尽可能减少请求。
我认为它应该通过关系工作,看起来如下:
$areas = Category::find()
->parent()
->published()
->orderBy('position ASC')
->with('latestProduct')
->limit(8)
->asArray()
->all();
public function getLatestProduct()
{
return $this->hasOne(Product::className(), ['category_id' => 'id'])
->viaTable('category', ['parent_id' => 'id'])
->published()
->with('firstImage')
->orderBy('date_create DESC');
}
这段代码没有按预期工作。它是否正确写入以及我应该如何实现这种类型的任务?
答案 0 :(得分:-1)
在Category
模型中,您可以执行以下操作。
public function latestProducts()
{
return Product::find()->where(['category_id' => $this->id])->published()->with('firstImage')->orderBy('date_create DESC')->all();
}
在循环播放每个类别的视图中,请调用此函数,如下所示。
$category->latestProducts(); // where $category is the current category in loop