輸出原生sql:
DB::table('users')->where([['name','=','張三']])->toSql(); //輸出sql為:select * from users where name=?;
DB::table('users')->where([['name','=','張三']])->getQuery(); //輸出sql為:select * from users where name='張三';
運行原生sql查詢:
$users = DB::select('select * from users where name = ?', ['張三']);
對于whereIn Query的寫法:
//原生寫法
DB:selectOne("select sum(price) from order_code where code_no in (select code_no from delivery where create_time<:time
)", ["time"=>"2019-01-30"
]);//selectOne 查一條 select查多條 返回為數組//構造器寫法
DB::table("order_code")->whereIn("id", function($query){$query->select('id')->from('delivery')->where([["id", ">", 1]]);})->get();//返回為ObjectClass對象 可以使用toArray將結果轉為數組
另:對于whereIn array的想多說一點,最好將數組元素轉為對應的字段的字符類型,不然會影響執行效率,比如:code_no為String類型,數組元素$arr=[092378,67222],去whereIn時會慢很多,但如果是$arr=['092378','67222'],執行時間會減少很多,大家都可以親自測試一下。
運行原生sql部分參考文檔:https://laravel.com/docs/5.7/database
輸出原生sql部分參考文檔:https://blog.csdn.net/Tim_phper/article/details/78606253