Я пытаюсь сделать запрос к базе данных, чтобы получить список любимых продуктов по категориям
В категории есть атрибут с названием sortcode после этого у меня есть категория $: [3242,1231,6343,1232] и продукты
$products = Product::find()->where(['category'=>$categoryids])->all();
Но результат оказался не таким, как я ожидал, элемент в $products сортировать по индексу
Теперь я хочу, чтобы все товары в категории 3242 были сначала ранжированы, а затем - 1231 ...
Как мне получить желаемый результат?
Извините за мой плохой английский!
Заранее спасибо и хорошего дня !!






Обратитесь к Yii2 orderBy ()
$products = Product::find()
->where(['category'=>$categoryids])
->orderBy(['here_your_category_id' => SORT_ASC])
->all();
я не знаю, что вы получите? пожалуйста, дайте подробную информацию.
также добавить информацию о таблице.
попробуйте использовать где в состоянии
$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']);
}
Спасибо! Ты спасешь мой день!
Я не использую orderby, потому что category_id имеет порядок, отличный от поля sortcode