Я написал это и работал как необработанный запрос SQL, но я пытаюсь преобразовать его в более понятный дизайн eloquent / построителя запросов Laravel вместо простого запроса.
Моя структура таблицы выглядит следующим образом:
Table One (Name model)
______________
| id | name |
|------------|
| 1 | bob |
| 2 | jane |
--------------
Table Two (Date Model)
_________________________________
| id | table_1_id | date |
|-------------------------------|
| 1 | 1 | 2000-01-01 |
| 2 | 1 | 2000-01-31 |
| 4 | 1 | 2000-02-28 |
| 5 | 1 | 2000-03-03 |
| 6 | 2 | 2000-01-03 |
| 7 | 2 | 2000-01-05 |
---------------------------------
Я возвращаю только самые высокие (самые последние) даты из таблицы 2 (модель дат), которые соответствуют пользовательскому бобу из таблицы 1 (модель имени).
Например,в приведенном выше примере я возвращаю это из моего запроса
2000-01-31
2000-02-28
2000-03-03
Вот что я делаю сейчас (это работает), но я просто не уверен, как использовать YEAR
, MONTH
и MAX
с laravel.
DB::select(
DB::raw("
SELECT MAX(date) as max_date
FROM table_2
INNER JOIN table_1 ON table_1.id = table_2.table_1_id
WHERE table_1.name = 'bob'
GROUP BY YEAR(date), MONTH(date)
ORDER BY max_date DESC
")
);