Для сортировки и группировки данных в Laravel, используя Query Builder или Eloquent, можно выполнить следующие шаги:
1. Сначала получите данные из таблицы `poverkas` и ваших связанных моделей.
2. Используйте функции `orderBy` для сортировки данных по определённому столбцу.
3. Примените функцию `groupBy` для группировки результатов по году.
4. Вы можете также использовать `selectRaw` или `DB::raw` для форматирования дат и извлечения месяца и года.
Ниже пример кода контроллера, который теоретически должен выполнять требуемые операции:
```php
use Illuminate\Support\Facades\DB;
use App\Models\Poverka; // Предполагаем, что это ваша модель для таблицы 'poverkas'
public function getSortedPoverkas()
{
$poverkas = Poverka::selectRaw("
YEAR(poverka_do) as year,
MONTH(poverka_do) as month,
*
")
->join('your_main_table', 'poverkas.main_table_id', '=', 'your_main_table.id') // Присоединяем основную таблицу
->orderBy('year', 'asc') // Сначала сортируем по году
->orderBy('month', 'asc') // Потом сортируем по месяцу
->get();
// Группировка по годам
$groupedPoverkas = $poverkas->groupBy('year');
return $groupedPoverkas;
}
```
В коде выше представлен следующий процесс:
1. Мы выбираем все данные, а также извлекаем год и месяц из колонки `poverka_do` с помощью `selectRaw()`.
2. Присоединяем основную таблицу по необходимому условию через `join()`.
3. Сортируем выборку сначала по году, затем по месяцу.
4. Используем `get()` для получения коллекции результатов.
5. Применяем `groupBy('year')` для группировки по годам.
Каждая группа представляет собой коллекцию моделей `Poverka`, отсортированных по месяцам и далее группированных по годам.
В зависимости от Ваших точных требований, возможно понадобится дополнительные действия с вашим результатом, например, детальная работа с вложенными группировками или форматирование вывода. Надеюсь, этот пример предоставит Вам основу для решения вашей задачи.