Laravel 5.2 Query Builder中的嵌套查询拉出MAX日期

时间:2016-07-28 22:51:42

标签: php mysql sql laravel-5

我正在尝试拉出一组自指定日期以来未进行过交易的用户。

这是我的疑问:

    $notActive = DB::table('transactions')
    ->join('users','transaction.user_id', '=', 'users.user_id' )
    ->select(DB::raw('users.user_id, users.name, max(transaction.last_posted_date) AS lastDate'))
    ->groupBy('users.user_id')
    ->where('lastDate', '<', ''.$not.'');

    return Datatables::of($notActive)
    ->make(true);

$ not是拉入的日期值。这会产生ajax数据表错误。我尝试了多种方法,包括在where子句中为最大日期放置一个select语句,但它不断抛出错误。有没有更好的方法来查询我想要的数据?感谢。

1 个答案:

答案 0 :(得分:1)

我明白了!使用having子句提示那些日期小于输入字段提供日期的交易的用户(即自动不活动)

$notActive = DB::table('transactions')
    ->join('users','transactions.user_id', '=', 'users.user_id' )
    ->select(DB::raw('users.user_id, users._name, max(transactions.last_posted_date) as last_posted_date'))
    ->groupBy('users.user_id')
    ->having('transactions.last_posted_date', '<', ''.$not.')');

    return Datatables::of($latestTransactions)
    ->make(true);