Как отсортировать / упорядочить поля модели? - PullRequest
1 голос
/ 11 марта 2020

Я делаю $users = User::all(); Это дает мне коллекцию пользовательских объектов, где у каждого объекта есть поля примерно такие:

[   
    {
      "id":10,
      "age":10,
      "name":"John",
      "bank_no":5454

   },
   {
      "id":20,
      "age":10,
      "name":"Jane",
      "bank_no":457

   }
]

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

Например:

[   
   {
      "age":10,
      "bank_no":5454      
      "id":10,
      "name":"John"

   },
   {
      "age":10,
      "bank_no":457      
      "id":20,
      "name":"Jane"

   }
]

Теперь я знаю, что этот порядок соответствует порядку, в котором поля определены в файле миграции. Но изменение миграции для меня не вариант.

Как я могу сделать это эффективно?

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Сортировать по ключам вы можете сделать это:

$users = User::all();
foreach ($users as $key => $value) {
    ksort($key); 
}

Попробуйте это.

0 голосов
/ 11 марта 2020

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

$json = '[   
    {
      "id":10,
      "age":10,
      "name":"John",
      "bank_no":5454

   },
   {
      "id":20,
      "age":10,
      "name":"Jane",
      "bank_no":457

   }
]';

$arr = json_decode($json, true);

$res = [];
foreach($arr as $arrObj){
    ksort($arrObj);
    $res[] = $arrObj; 
}

print_r($res);

Laravel функция сортировки по коллекции см. Документацию здесь

$collection = collect([
    'id' => 22345,
    'first' => 'John',
    'last' => 'Doe',
]);

$sorted = $collection->sortKeys();

$sorted->all();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...