簡體   English   中英

帶有聯接的Laravel查詢生成器

[英]Laravel query builder with joins

我在將原始sql查詢轉換為laravel查詢生成器時受阻。 有人可以幫我解決這個問題嗎?

select p.name, p.`type`, p.`status`, p.state, ps1.* from pos_session ps1 right join pos p on ps1.pos_id = p.id where ps1.id = (select max(ps0.id) from pos_session ps0 where ps0.pos_id = ps1.pos_id) or p.site_id = '2' order by ps1.pos_id;

嘗試以下查詢:

 DB::table('pos_session AS ps1')
        ->select('p.name','p.type','p.status','p.state','ps1.*')
        ->rightJoin('pos AS p','ps1.pos_id','=','p.id')
        ->where('ps1.id','=',function($query){
            $query->select(DB::raw('MAX(ps0.id)'))
                ->from('pos_session AS ps0')
                ->where('ps0.pos_id','=','ps1.pos_id');
        })
        ->orWhere('p.site_id','=',2)
        ->orderBy('ps1.pos_id')
        ->get();

您也可以通過加入來獲得結果:

DB::table('pos_session AS ps1')
            ->select('p.name','p.type','p.status','p.state','ps1.*')
            ->rightJoin('pos AS p','ps1.pos_id','=','p.id')
            ->join('pos_session AS ps0', 'ps0.pos_id', '=', 'ps1.pos_id')
            ->where('ps1.id','=',DB::raw('MAX(ps0.id)'))
            ->orWhere('p.site_id','=',2)
            ->orderBy('ps1.pos_id')
            ->get();

希望它有幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM