Yii2:findby in find() - > where()方法

时间:2018-06-04 04:55:59

标签: php yii2

我正在尝试对数据库进行查询,以按类别检索收藏产品列表

在类别中有一个名为sortcode的属性 之后我有$ categoryids:[3242,1231,6343,1232] 和产品

$products = Product::find()->where(['category'=>$categoryids])->all();

但结果并不像我预期的那样,$products中的项目按索引排序 现在我希望3242类的所有产品应排在第一,然后到1231 ...... 我如何得到我想要的结果? 对不起,我的英语不好! 提前致谢,祝你有愉快的一天!

2 个答案:

答案 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)

参考Yii2 orderBy()

$products = Product::find()
            ->where(['category'=>$categoryids])
            ->orderBy(['here_your_category_id' => SORT_ASC])
            ->all();