输出原生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

 posted on 2019-01-30 17:38  15mins❤️  阅读(203)  评论(0编辑  收藏  举报