php laravel 连接查询,php – Laravel使用查询构建器嵌套连接查询

这是一个搜索功能,可以返回每个成员注册的最近年份.

我让它使用DB :: raw()调用.但无法让它与查询构建器一起使用.

工作守则:

$query = DB::table('membership as m');

$query->join(

DB::raw(

'(SELECT my.*

FROM membership_years my

INNER JOIN (

SELECT member_id,MAX(membership_year) AS max_my

FROM membership_years

GROUP BY member_id

) my2

ON my.member_id = my2.member_id

AND my.membership_year = my2.max_my

) my'

)

,'m.id','=','my.member_id');

我对查询构建器代码的尝试:

$query = DB::table('membership as m');

$query->join('membership_years as my',

function($j1){

$j1->join('membership_years as my2',

function($j2){

$j2->where('my.membership_year','=','MAX(my2.membership_year)')

->on('my.member_id','=','my2.member_id');

}

)->on('m.id','=','my.member_id');

}

);

产生的错误是:

Call to undefined method Illuminate\Database\Query\JoinClause::join()

我不确定这是不是因为$j2再也无法访问join方法了?

原始MySQL查询:

SELECT my.membership_year,m.*

FROM membership AS m

INNER JOIN

(

SELECT my1.*

FROM membership_years my1

INNER JOIN

(

SELECT member_id,MAX(membership_year) AS max_my

FROM membership_years

GROUP BY member_id

) my2

ON my1.member_id = my2.member_id

AND my1.membership_year = my2.max_my

) my

ON m.id = my.member_id

ORDER BY m.id ASC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值