Есть модели `ProductNomeclature` и `Brand`. А у модели `Brand` есть свойства `name`.
Как получить отсортированные строки таблицы ProductNomeclature, по полю `name` модели `Brand`?
В таблице ProductNomeclature есть поле "brand_code" - это ID бренда, таблицы brand.
После выборки я конечно же могу отсортировать массив, но мне нужна сортировка именно ещё на стадии выборки (SQL запроса). Сортировка массива ПОСЛЕ выборки, по вложенным значениям мне не подходит!!
В запросе такого вида, сортируются данные, которые выбираются из связанной таблицы brand:
$items = ProductNomeclature::find()
->with([
'brand' => function ($query) {
$query->orderBy('name', 'ASC');
}
])
->all();
Но у меня по связи из таблицы brand, для каждой строки таблицы ProductNomeclature выбирается только один бренд, по этому там сортировка не нужна.
А нужно чтобы все строки из ProductNomeclature - сортировались по полю 'name' из таблицы brand
Вот так не работает:
$items = ProductNomeclature::find()
->with(['brand'])
->orderBy('name', 'ASC')
->all();
Потому что поля 'name' в таблице ProductNomeclature не существует.
Пробовал делать и так: ->orderBy('brand.name', 'ASC') - тоже не работает.
Говорит что в ProductNomeclature - поля brand.name не существует.
В гугле перерыл МНОГО ГДЕ! - Не нашел ничего подходящего.
Есть варианты, но для Laravel. Для Yii2 они не подходят.
В Yandex тоже много где рыл, не нашел ничего подходящего.
Очень очень буду благодарен за помощь в решении этой задачи.