如何获取Join查询中的表中最后更新的行(Laravel 5)

时间:2016-02-19 10:06:01

标签: php mysql join laravel-5.1

我有这样的查询:

$deals=DB::table('leadsheet')
            ->join('Deal', 'leadsheet.leadcode', '=', 'Deal.leadcode')
            ->join('vipbooking', function ($join) {
                        $join->on('leadsheet.leadcode', '=', 'vipbooking.leadcode')
                         ->where('id', DB::raw("(select max(`id`) from vipbooking)"));
            })
            ->where('leadsheet.leadcat', '=','Delegates')
            ->get();

我收到以下错误:

Missing argument 3 for Illuminate\Database\Query\JoinClause::where(),

它指向以下行:

->where('id', DB::raw("(select max(`id`) from vipbooking)"));

我想从vipbooking表单中获取最大ID。

例如。

Leadsheet

id | leadcode | leadcat

1  | DL2016012| Delegates
2  | DL2016013| Delegates
3  | VL2016001| Vendors
4  | VL2016002| Vendors

优惠

id | leadcode | DealAmount

1  | DL2016012| 123
2  | VL2016002| 1000

vipbooking

    id | leadcode | date      | bookingtxt

    1  | DL2016012| 20-04-2016| xxx
    2  | DL2016012| 20-04-2016| dddd
    3  | VL2016012| 21-04-2016| ppp

因此,从上面的示例我想获得代表最近填写的预订表格详细信息。

所以我的Out put应该有:

 2 123 | Delegates| DL2016012| 20-04-2016| dddd

谢谢

1 个答案:

答案 0 :(得分:0)

->where('id', DB::raw("(select max(`id`) from vipbooking)"));

错误是要求您提供第三个参数,因此请将该行更改为:

->where('vipbooking.id','=', DB::raw("(select max(`id`) from vipbooking)"));

或者你可以使用另一个' on'更多:

$join->on('leadsheet.leadcode', '=', 'vipbooking.leadcode')
     ->on('vipbooking.id', '=', DB::raw("(select max(`id`) from vipbooking)"));