Yii2: orderby в методе find () -> where ()

Я пытаюсь сделать запрос к базе данных, чтобы получить список любимых продуктов по категориям

В категории есть атрибут с названием sortcode после этого у меня есть категория $: [3242,1231,6343,1232] и продукты

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

Но результат оказался не таким, как я ожидал, элемент в $products сортировать по индексу Теперь я хочу, чтобы все товары в категории 3242 были сначала ранжированы, а затем - 1231 ... Как мне получить желаемый результат? Извините за мой плохой английский! Заранее спасибо и хорошего дня !!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
1 108
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Обратитесь к Yii2 orderBy ()

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

Я не использую orderby, потому что category_id имеет порядок, отличный от поля sortcode

vương Thong 04.06.2018 08:46

я не знаю, что вы получите? пожалуйста, дайте подробную информацию.

vishuB 04.06.2018 08:50

также добавить информацию о таблице.

vishuB 04.06.2018 08:52
Ответ принят как подходящий

попробуйте использовать где в состоянии

$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']);
}

Спасибо! Ты спасешь мой день!

vương Thong 04.06.2018 10:06

Другие вопросы по теме