Laravel - orderBy имя на связи с функцией карты - PullRequest
1 голос
/ 07 мая 2019

Я ищу решение для сортировки по алфавиту списка производителей, используя отношения, map функция и toArray(). Вот пример кода:

$manufacturers = Manufacturer::with('translation')
->get()
->map(function ($m) {
      return ['key' => $m->getName(), 'value' => $m->id];
      })
->pluck('key', 'value')
->prepend('Choose manufaturer', '')
->toArray();

А позже в поле зрения создается список выбора:

enter image description here

Я попытался добавить заказ к переводу следующим образом:

$manufacturers = Manufacturer::with(['translation' => function ($q) {
  $q->orderBy('name', 'ASC');
}])->get()  
// code cutted here (same as above)

Код не показывает ошибки, но не упорядочивает. Я полагаю, что у каждой коллекции производителей есть свой перевод и порядок у каждого производителя, чем во всем списке.

Вот дд ($ производителей):

enter image description here

Я также думаю о двух решениях - добавить объединение в запрос, как это делали немногие разработчики в stackoverflow, или сортировать в php, что кажется плохой идеей. Есть ли «простое» решение этой проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...