1.时间查询例子
public function timeQuery()
{
//1.传统方式
Db::name('user')->where('create_time','<','2018-1-1')->select();
Db::name('user')->where('create_time','between',['2018-1-1','2018-1-31'])->select();
//2.快捷方式
Db::name('user')->whereTime('create_time','>=','2018-1-1')->select();
Db::name('user')->whereBetween('create_time',['2018-1-1','2018-1-31'])->select();
Db::name('user')->whereBetweenTime('create_time','2018-1-1','2018-1-31')->select();
Db::name('user')->whereTime('create_time','2018-1-1')->select();//默认大于
//3.固定查询
//3.1 使用whereYear查询今年、去年、某一年的数据
Db::name('user')->whereYear('create_time')->select();
Db::name('user')->whereYear('create_time','last year')->select();
Db::name('user')->whereYear('create_time','2018')->select();
//3.2 使用whereMonth查询当月的数据、上月的数据和某一个月的数据
Db::name('user')->whereMonth('create_time')->select();
Db::name('user')->whereMonth('create_time','last month')->select();
Db::name('user')->whereMonth('create_time','2018-6')->select();
//3.3使用 whereDay 查询今天的数据、昨天的数据和某一个天的数据;
Db::name('user')->whereDay('create_time')->select();
Db::name('user')->whereDay('create_time','last day')->select();
Db::name('user')->whereDay('create_time','2018-6-29')->select();
//4.其他查询
Db::name('user')->whereTime('create_time','-2 hours')->select();//查询指定时间的数据,比如两小时内的
Db::name('user')->whereBetweenTimeField('start_time','end_time')->select();
}
2.聚合.原生.子查询
public function aggregateProgenyQueries()
{
Db::name('user')->count();
Db::name('user')->count('uid');
Db::name('user')->max('price',false);
Db::name('user')->mix('price');
Db::name('user')->avg('price');
Db::name('user')->sum('price');
Db::name('user')->fetchSql(true)->select();
Db::name('user')->buildSql(true);
$subQuery = Db::name('two')->field('uid')->where('gender','男')->buildSql(true);
$result = Db::name('one')->where('id','exp','IN'.$subQuery)->select();
Db::name('one')->where('id','in',function ($query){
$query->name('two')->where('gender','男')->field('uid');
});
Db::query("select * from user where id = (select id from user where id = 1)");
Db::execute("update tp_user set username='周星驰' where id=29");
}
3.链式查询方法
public function chainQuery()
{
Db::name('user')->fieldRaw('id,SUM(price)')->select();
Db::name('user')->field(true)->select();
Db::name('user')->withoutField('details')->select();
Db::name('user')->field('username,email,details')->insert($data);
}
Db::name('user')->page(1, 5)->select();
Db::name('user')->page(2, 5)->select();
Db::name('user')->order('id', 'desc')->select();
Db::name('user')->order(['create_time'=>'desc', 'price'=>'asc'])->select();
Db::name('user')->orderRaw('FIELD(username,"樱桃小丸子") DESC')->select();
数据库的高级查询

public function advancedQuery()
{
$map1 = [ ['username', 'like', '%小%'], ['email', 'like', '%163%'] ];
$map2 = [ ['username', 'like', '%孙%'], ['email', 'like', '%.com%'] ];
Db::name('user')->whereOr([$map1, $map2])->select();
Db::name('user')
->where(function ($query){
$query->where('id','>',10);
})->whereOr(function ($query){
$query->where('username','like','%小%');
})->select();
$user = Db::name('user') ->whereRaw('(username LIKE :username AND email LIKE :email) OR (price > :price)', ['username'=>'%小%', 'email'=>'%163%', 'price'=>80]) ->select();
}
数据库的快捷查询
public function fast()
{
$user = Db::name('user')
->whereColumn('update_time','>','create_time')
->select();
$user = Db::name('user')
->when(false,function ($query){
$query->where('id','>',0);
},function ($query){
$query->where('username','like','%小%');
})->select()->toArray();
Db::name('user')->whereEmail('xiaoxin@163.com')->find();
Db::name('user')->whereUsername('蜡笔小新')->find();
Db::name('user')->getByEmail('xiaoxin@163.com');
Db::name('user')->getFieldByEmail('xiaoxin@163.com', 'username');
}