Мне нужно немного помочь с получением данных из таблиц, которые связаны.
У меня есть 2 таблицы: карты и статусы :
У меня есть следующие данные в таблице карты :
id_card | card_type
--------|----------
123 | tag
281 | card
455 | card
721 | tag
В статусы таблица I есть:
id_status | id_card | status_date | status_type | status_company | status_user
----------|---------|-------------|-------------|----------------|------------
1 | 123 | 2018-12-04 | available | |
2 | 281 | 2018-12-04 | available | |
3 | 455 | 2018-12-04 | available | |
4 | 721 | 2019-03-26 | available | |
5 | 281 | 2020-01-25 | issued | Company A | User One
6 | 123 | 2020-01-10 | issued | Company B | User Two
7 | 281 | 2020-01-25 | available | |
8 | 123 | 2020-02-02 | lost | |
9 | 455 | 2020-02-14 | issued | Company C | Third User
Для таблицы карты У меня есть следующие в Карта модель:
public function Status() {
return $this->hasMany('App\Status', 'id_card', 'id_card')
->orderBy('status_date', 'desc');
}
И для статусы таблица у меня в статус модель:
public function Card() {
return $this->hasOne('App\Card', 'id_card', 'id_card')
}
Теперь, как мне написать запрос, который бы возвращал мне список карточек вместе со значениями из таблицы статусов, но только с последними статус для каждой карты, например:
id_card | card_type | status_type | status_date | status_company | status_user
--------|-----------|-------------|-------------|----------------|------------
123 | tag | lost | 2020-02-02 | |
281 | card | available | 2020-01-25 | |
455 | card | issued | 2020-02-14 | Company C | Third User
721 | tag | available | 2019-03-26 |
И есть ли способ также фильтровать такой запрос, т.е. получать только доступные карты:
id_card | card_type | status_type | status_date | status_company | status_user
--------|-----------|-------------|-------------|----------------|------------
281 | card | available | 2020-01-25 | |
721 | tag | available | 2019-03-26 | |
Большое спасибо в заранее:)