我有一个带有FK的旅行表,user_id (int)
和date (datetime)
。我正在尝试选择他们最近活动的用户列表。
trip_id (PK)
user_id (FK)
date
我试了很久但我坚持以下查询。 GROUP BY
user_id
不起作用,因为MySQL不会允许它(参数是非聚合的或沿着该行的某些内容),DISTINCT
user_id
只选择该特定值而不考虑约会。
SELECT * FROM trips ORDER BY date DESC;
我也试图在Laravel中这样做,但是我试图在将它“翻译”到ORM版本之前解决如何处理查询的问题。如果有人有任何好的想法,请随时提出建议,谢谢!
答案 0 :(得分:0)
如果您想获得旅行并按日期订购,请执行以下操作:
Trip::orderBy('date', 'desc')->get();
但是如果你想激活那些在上个月(或其他时间段)有旅行的用户:
$activeUsers = User::whereHas('trips', function($q) {
$q->where('date', '>', Carbon::now->subMonths(1));
})->get();
如果您已将date
放入$dates
模型的Trip
数组并定义了这种关系,那么这将有效:
public function trips()
{
return $this->hasMany('App\Trip');
}