【发布时间】:2020-04-06 23:17:39
【问题描述】:
我正在尝试使用 Eloquent Laravel 6 从关系表中获取第二高的日期。
MoodTable
id animal_id date mood
1 1 2019-12-14 happy
2 1 2019-12-11 drunk
3 1 2019-12-13 sad
AnimalTable
id name
1 Dog
因此,例如,我希望能够查询:“今天狗很开心。之前他喝醉了。
获取我使用的最高值:
return $this->hasMany('App\AnimalMood', 'animal_id')->select(DB::raw('
mood,
animal_id,
MAX(date) as max_date,
'))
->groupBy('stock_id');
但是,说到第二个最高约会……我出去了……
我看过How to return second newest record in SQL? 对于一些答案,但无法将其放在关系中,也无法将其翻译为 Eloquent。
理想情况下,我想从我的控制器运行 Animal::with('moodPrevious')->get() 和 Animal::find(1)->moodPrevious...
【问题讨论】:
-
您可以对子查询进行计数,该子查询会计算高于当前日期的日期。如果计数为 1,则您的排名第二。
标签: mysql laravel date eloquent