То, что я в основном пытаюсь сделать, это заказать мою коллекцию на основе наиболее часто встречающихся item_id
в результатах.
Например; У меня есть таблица со следующими данными:
+----+---------+---------+---------+---------+
| id | item_id | column2 | column3 | column4 |
+----+---------+---------+---------+---------+
| 1 | 12 | Hi | DataHere| MoreData|
| 2 | 12 | Hi | DataHere| MoreData|
| 3 | 14 | Hi | DataHere| MoreData|
| 4 | 13 | Hi | DataHere| MoreData|
| 5 | 12 | Hi | DataHere| MoreData|
| 6 | 21 | Hi | DataHere| MoreData|
+----+---------+---------+---------+---------+
То, как я могу получить доступ к исходной таблице, будет с простой MyData::get()
моделью и аксессором.
Я попытался сделать следующее, но могу получить только item_id
& count
для возврата, мне нужно, чтобы все столбцы были возвращены, только что упорядоченные наиболее частыми item_id
MyData::select(\DB::raw('item_id'), \DB::raw('count(*) as count'))->having('item_id', '>', '0')->groupBy('item_id')->orderBy('count', 'desc')->get();
Мой ожидаемый результат будет:
+----+---------+---------+---------+---------+
| id | item_id | column2 | column3 | column4 |
+----+---------+---------+---------+---------+
| 1 | 12 | Hi | DataHere| MoreData|
| 2 | 12 | Hi | DataHere| MoreData|
| 5 | 12 | Hi | DataHere| MoreData|
| 6 | 21 | Hi | DataHere| MoreData|
| 3 | 14 | Hi | DataHere| MoreData|
| 4 | 13 | Hi | DataHere| MoreData|
+----+---------+---------+---------+---------+