如何查找Laravel MySQL的活跃用户列表?

时间:2017-01-19 07:33:17

标签: mysql laravel laravel-5

我有一个带有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版本之前解决如何处理查询的问题。如果有人有任何好的想法,请随时提出建议,谢谢!

1 个答案:

答案 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');
}