Можно ли отсортировать таблицу с помощью массива в Laravel? - PullRequest
0 голосов
/ 15 апреля 2019

Мне нужно отсортировать таблицу с помощью Laravel, и у меня есть поле «status_id», где я не могу присоединиться к другой таблице, потому что статусы находятся в массиве.

Массив:

$statuses = [
  1 => 'Active',
  2 => 'Suspended',
  3 => 'Inactive'
];

Запрос Laravel (joinArray не существует, мне нужно что-то вроде этого):

Contact::select('id', 'name', 'status_id', 'status_name')
->joinArray($statuses, ['status_id'=>'status_name'])
->orderBy('status');

Мне нужно, чтобы порядок был таким (в алфавитном порядке):

* Active
* Inactive
* Suspended

Но я получаю это (в соответствии с полем status_id):

* Active
* Suspended
* Inactive

1 Ответ

0 голосов
/ 15 апреля 2019

Следующее не проверено, однако должно работать.

Contact::select('id', 'name', 'status_id', 'status_name')
    ->get()
    ->sortBy(function($query) {
       $statuses = [
          1 => 1, //Active in first position
          2 => 3, //Suspended in third position
          3 => 2  //Inactive in second position
       ];
       return $statuses[$query->status_id];
    });

Было бы намного проще, если бы вы добавили статусы в базу данных и просто создали связь.

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