我正在尝试对数据库进行查询,以按类别检索收藏产品列表
在类别中有一个名为sortcode的属性 之后我有$ categoryids:[3242,1231,6343,1232] 和产品
$products = Product::find()->where(['category'=>$categoryids])->all();
但结果并不像我预期的那样,$products
中的项目按索引排序
现在我希望3242类的所有产品应排在第一,然后到1231 ......
我如何得到我想要的结果?
对不起,我的英语不好!
提前致谢,祝你有愉快的一天!
答案 0 :(得分:3)
尝试在条件
中使用$products = Product::find()
->where(['in','category',$categoryids])
->orderBy('category DESC')
->all();
或者如果您想按类别的短代码对其进行排序,您应该加入类别表,尚未测试但应该有效:
$products = Product::find()
->where(['in','category',$categoryids])
->joinWith(['categorys' => function ($query) {
$query->orderBy('shortcode');
}])
->all();
请勿在产品型号中添加类别关系。
public function getCategorys()
{
return $this->hasOne(Category::className(), ['id' => 'category']);
}
答案 1 :(得分:0)
$products = Product::find()
->where(['category'=>$categoryids])
->orderBy(['here_your_category_id' => SORT_ASC])
->all();