我有一个结构如下命名续订的表。
------------------------------------------------
| id | membership_id| valid_from | valid_upto |
------------------------------------------------
| 1 | 1 | 2015-02-15 | 2016-02-15 |
| 2 | 2 | 2015-05-16 | 2016-05-16 |
| 3 | 2 | 2016-05-16 | 2017-05-16 |
| 4 | 3 | 2014-06-16 | 2015-06-16 |
| 5 | 3 | 2015-06-16 | 2016-06-16 |
| 6 | 3 | 2016-06-16 | 2017-06-16 |
| 7 | 1 | 2016-02-15 | 2017-02-15 |
------------------------------------------------
我需要记录每个成员的最新有效日期。如何使用Laravel Eloquent做到这一点。任何其他简单的方法将不胜感激。
最佳答案
在用户模型中
public function latest_renewal()
{
return $this->hasOne('App\Renewals', 'membership_id')->latest('valid_upto');
}
在控制器中
$users = User::with('latest_renewal')->get();
/*
[
{
'id' => 1,
'name' => 'user1',
'latest_renewal' => {
'id' => 7,
'membership_id' => 1,
'valid_from' => '2016-02-15',
'valid_upto' => '2017-02-15',
}
},
{
'id' => 2,
'name' => 'user2',
'latest_renewal' => {
'id' => 3,
'membership_id' => 2,
'valid_from' => '2016-05-16',
'valid_upto' => '2017-05-16',
}
}
]
关于mysql - 如何获得使用Laravel Eloquent 模型的groupBy()创建的每个组的第一条记录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46707013/