如何在Laravel进行查询

时间:2019-08-24 02:31:28

标签: laravel laravel-5 eloquent

我有这样的sql 从tpo_suppheader中选择no_po,其中no_po不在( 从tpo_supp_stok中选择no_po。

如何在laravel编码?

 $datas = DB::table ('tpo_suppheader') 
            ->join('tpo_suppdetil', 'tpo_suppheader.no_po', '=', 'tpo_suppdetil.no_po')
            ->join('tmsupplier', 'tpo_suppheader.suppid', '=', 'tmsupplier.id')                    
            ->select('tpo_suppheader.*', 'tpo_suppdetil.*', 'tmsupplier.nama_supp')
            ->where('tpo_suppheader.no_po','like',"%".$var_cari."%")
            ->whereNotIn('no_po', $data_dtl)
            ->get();

 $datas = DB::table ('tpo_suppheader') 
            ->join('tpo_suppdetil', 'tpo_suppheader.no_po', '=', 'tpo_suppdetil.no_po')
            ->join('tmsupplier', 'tpo_suppheader.suppid', '=', 'tmsupplier.id')                    
            ->select('tpo_suppheader.*', 'tpo_suppdetil.*', 'tmsupplier.nama_supp')
            ->where('tpo_suppheader.no_po','like',"%".$var_cari."%")
            ->whereNotIn('no_po', $data_dtl)
            ->get();

1 个答案:

答案 0 :(得分:0)

这将适用于每个查询:使用toSql()了解构建器如何翻译查询。

例如:

dd(DB::table('table1')->...->toSql());

将转储翻译后的查询。进行修补,直到获得所需的结果。使用这种反复试验的方法,我得到了:

$query = DB::table('tpo_suppheader')->select('no_po')             # SELECT no_po FROM tpo_suppheader
           ->whereNotIn('no_po', function ($subquery) {           # WHERE no_po NOT IN (
               $subquery->select('no_po')->from('tpo_supp_stok'); #     SELECT no_po FROM tpo_supp_stok
           });                                                    # )

dd($query->toSql());
#  "select "no_po" from "tpo_suppheader" where "no_po" not in (select "no_po" from "tpo_supp_stok")"

$results = $query->get();