我有这样的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();
答案 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();