如何laravel使用选择上左外连接的第二准则

问题描述 投票:0回答:1

我想这个MySQL块laravel SQL转换,但无论如何不能成功地

select tt.id
     , tt.date
     , m1.date
     , m2.date
     , m1.userid
     , m2.userid 
  from tbltickets tt 
  join tblticketreplies m1 
    on tt.id = m1.tid 
  left
  join tblticketreplies m2 
    on m1.tid = m2.tid 
   and m2.date =
     (SELECT min(m3.date) 
       FROM tblticketreplies m3 
      WHERE m3.date > m1.date 
        and m3.tid=m1.tid) 
 where tt.date > NOW() - INTERVAL 1 MONTH;

Laravel块:

        $rows = DB::table('tbltickets')
        ->join('tblticketreplies as m1', 'tbltickets.id', '=', 'm1.tid')
        ->leftJoin("tblticketreplies as m2", function($join) {
            $join->on('m2.tid', '=', 'm1.tid');
            $join->on('m2.date',"=",DB::raw("SELECT min(m3.date) FROM tblticketreplies m3 WHERE m3.date > m1.date and m3.tid=m1.tid"));
        })
        ->select('tt.id as id,tt.date as first,m1.date as second,m2.date as third ,m1.userid as fid,m2.userid as sid')
        ->get();

是否有任何身体知道如何使用选择在外部连接或确实有可能做到这一点?

mysql laravel
1个回答
0
投票

您还没有添加别名tbltickets(TT)和选择使用它,其次是选择(),你需要传递多个参数目前它只是一个很长的字符串。

<?php
 $rows = DB::table('tbltickets as tt')
        ->join('tblticketreplies as m1', 'tbltickets.id', '=', 'm1.tid')
        ->leftJoin("tblticketreplies as m2", function($join) {
            $join->on('m2.tid', '=', 'm1.tid');
            $join->on('m2.date',"=", DB::raw("SELECT min(m3.date) FROM tblticketreplies m3 WHERE m3.date > m1.date and m3.tid=m1.tid"));
        })
        ->select(
            'tt.id as id', 
            DB::raw('tt.date as first'),
            DB::raw('m1.date as second'),
            DB::raw('m2.date as third'),
            DB::raw('m1.userid as fid'),
            DB::raw('m2.userid as sid')
        )
        ->get();
© www.soinside.com 2019 - 2024. All rights reserved.