Я пытаюсь свернуть (объединить) коллекции Laravel из 3 разных запросов, а затем отсортировать их по одному и тому же ключу «recordTime».Поскольку каждый запрос обращается к разным таблицам, я не уверен, есть ли способ использовать orderBy как обычный запрос.Вот мой код:
$books = $targetItem->books()->whereBetween('recordTime', [$from, $to])->get();
$magazines = $targetItem->magazines()->whereBetween('recordTime', [$from, $to])->get();
$articles = $targetItem->articles()->whereBetween('recordTime', [$from, $to])->get();
$collection = collect([$books, $magazines, $articles]);
$collapsed = $collection->collapse();
//$collapsed = $collapsed->sortBy("recordID");
$records = $collapsed->all();
$ targetItem - это модель, имеющая отношение hasMany к каждой книге, журналу и статье.
Кажется, я успешно свернул коллекции, в результате чегов массиве объектов.Однако, когда я пытаюсь использовать функцию sortBy (закомментировано выше), она нацеливается на объекты, а не на ключи внутри объектов.
Извините, если я использую неправильную терминологию, ноМне в основном нужно, чтобы это сортировало на один уровень вниз.
Заранее спасибо!
РЕДАКТИРОВАТЬ Вывод без строки sortBy
"data": [
{
"recordID": 1,
...
},
{
"recordID": 2,
...
},
Вывод сстрока sortBy
"data": {
"0": {
"recordID": 1,
...
},
"1": {
"recordID": 2,
...
},
Кажется, что каждый объект имеет индекс, поэтому я предполагаю, что он пытается сортировать там, а не по тому, что содержит объект?Еще раз спасибо за помощь.