выбор последней строки для каждого идентификатора в Eloquent Laravel - PullRequest
0 голосов
/ 20 марта 2020

У меня есть история каждой аренды книги из библиотеки, и на основании этого я хочу показать текущий статус ВСЕХ КНИГ в библиотеке. Если у меня есть только id, book_id, status (bool) и временные метки, как мне сделать это самым простым способом, не касаясь SQL? Я хочу иметь самую свежую запись для каждого book_id, например:

|--|-------|------|----------|
|id|book_id|status|timestamp-|
|--|-------|------|----------|
| 1|      1|     0|12.12.2019|
| 2|      2|     0|13.12.2019|
| 3|      3|     0|14.12.2019|
| 4|      2|     1|15.12.2019|
| 5|      3|     1|16.12.2019|
| 6|      3|     0|17.12.2019|
|--|-------|------|----------|

, и я хочу получить это:

|--|-------|------|----------|
|id|book_id|status|timestamp-|
|--|-------|------|----------|
| 1|      1|     0|12.12.2019|
| 4|      2|     1|15.12.2019|
| 6|      3|     0|17.12.2019|
|--|-------|------|----------|

Идеи?

1 Ответ

2 голосов
/ 20 марта 2020
$lastestBookRentHistory = YourBookRentHistoryModel::where('book_id', 123)->latest();

Примечание: latest() работает, только если в вашей таблице есть столбец created_at. Вот как определяется latest().

public function latest($column = 'created_at')
{
    return $this->orderBy($column, 'desc');
} 

Если ваш столбец отметки времени не назван как created_at, используйте вместо этого lastest ('your-column-name').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...