TP5.0 查询语言
$result=Db::name(‘data’)->where(‘id’,4)->find();
$result=Db::name(‘data’)->where(‘id’,4)->select();
$result=Db::name(‘data’)->where(‘id’,’=’,4)->select();//‘=’可以换成> < <> in等 当换成in时 第三个参数是数组[ ]
查询某个字段是否为空
$result=Db::name(‘data’)->where(‘id’,’null’)->select();
使用EXP条件表达式,表示后面原生的SQL语句表达式
$result=Db::name(‘data’)->where(‘id’,’exp’,”in[1,2,3,4]”)->select();//in可以改为like > < =等
$result=Db::name(‘data’)->where(‘id’,’exp’,”》1 and name =’111’”)->select();
使用多个字段查询
$result=Db::name(‘data’)->where(‘id’,’>=’,1)->where(‘name’,’like’,’%php%’)->select();==select * from tp_data where ‘id’>=1 and ‘name’ like ‘%thinl%’;
$result=Db::name(‘data’)->where(
[‘id’=>[‘>=’,1],
‘name’=>[‘like’,’%think%’],
])->select();
使用OR和AND混合条件查询
$result=Db::name(‘data’)
->where(‘name’,’like’,’%think%’)
->where(‘id’,[‘in’,[1,2,3]],’[‘>=’,1]’,’or’)
->select();
select * from tp_data where ‘name’ like ‘%thinl%’ and(‘id’ in(1,2,3) or ‘id’>=1);
批量查询
$result=Db::name(‘data’)
->where(
[
‘id’=>[[‘in’,[1,2,3]],[‘>=’,1],’or’],
‘name’=>[‘like’,’%think%’]
])
->limit(10)
->select();
快捷查询
$result=Db::name(‘data’)
->where(‘id&status’,’>’,0)//&为and
->limit(10)
->select();
$result=Db::name(‘data’)
->where(‘id|status’,’>’,0)// |为or
->limit(10)
->select();
视图查询
$result=Db::view(‘data’,’id,name,status’)//查询data表的三个字段
->view(‘users’,[‘nickname’=>’users_name’,’mobile’,’email’],’users.users_id=data.id’)//‘nickname’=>’users_name’ 将nickname起一个别名user_name
//查询user表的三个字段,条件是users的ID和data相同
->where(‘data.status’,1)//条件
->order(‘id desc’)
->select();
使用Query对象
//获取某行某列数据
$name=Db::name('date')->where('id',16)->value('name');//获取某一个值<br /> $name=Db::name('data')->where('id',16)->find();//获取一行<br /> $name=Db::name('data')->where('status',1)->column('name');//查询data中satus为1 的一列的name<br /> $list=Db::name('data')->where('status',1)->column('name','id');//查询data中satus为1 的一列的name和相对应的id<br /> $list=Db::name('data')->where('status',1)->column('*','id');//查询data中satus为1 的键名()id的所以数据<br />
聚合查询 count max min avg(平均值) sum
$count=Db::name(‘data’)->where(‘status’,1)->count();//统计个数
$max=Db::name(‘data’)->where(‘status’,1)->max(‘id’);//ID最大的值
$result=Db::name(‘data’)->where(“id>10 and name like ‘%php%’”)->select();
建议使用占位符形式
$result=Db::name(‘data’)->where(“id>:id and name like :name”,[‘id’=>10,’name’=>”%php%”])->select();
$result=Db::name(‘data’)->where(‘reg_time’,’>’,’2016-1-1’)->select();//当日期类型为int型时也可以直接查询(自动转换为时间戳类型)
$result=Db::name(‘data’)->where(‘reg_time’,’>’,’this week’)->select();//大于本周的注册
$result=Db::name(‘data’)->where(‘reg_time’,’>’,’-2 days’)->select();//查询最近两天添加的数据
$result=Db::name(‘data’)->where(‘reg_time’,’between’,[‘2016-1-1’,’2016-2-2’])->select();//查询2016-1-1—2016-2-2添加的数据
// 获取今天的数据
$result = Db::name(‘data’)->whereTime(‘create_time’, ‘today’)->select();
等等。。。。
分块查询
如果你需要在中途中断后续
的查询,只需要在 callback 方法调用中返回 false 即可
Db::name(‘data’)->where(‘status’, ‘>’, 0)->chunk(100,
function ($list)
{// 处理100条记录
foreach($list as $data){
}
});
