查某行某列的值
$name = Db::name('data')
->where('id',16)
->value('name');
查某列值
$name = Db::name('data')
->where('status',1)
->column('name');
->find();查一行
查出id键名 name值名 键值对
$list = Db::name('data')
->where('status',1)
->column('name','id');
查id为键名的数据集
$list = Db::name('data')
->where('status',1)
->column('id','*');
聚合查询
count() max() min() avg() sum() 没什么特殊的
推荐使用方法
where("id > :id and name like :name",['id'=>10,'name'=>'%php%']);
whereTime('reg_time','>','2016-01-01');晚于此日,自动转换时间
whereTime('reg_time','>','this week'); 默认一周从周一开始计
whereTime('reg_time','>','-2 days');最近两天
whereTime('reg_time','between',['2016-1-1','2017-1-1']) 在此中间的一天
where('reg_time','today'); 可以是yestoday、week、last week
分块查询
Db::name('data')
->where('status','>',0)
->chunk(2,function($list){
foreach($list as $data){
//每次查两条
//多次连接数据库
}
});
以上优化后如下//可在trace中查看sql
$p = 0;
do{
$result = Db::name('data')
->limit($p,2)->select();
$p +=2;
}while(count($result) > 0);
模型和关联
Model类名 对应表名
属性对应字段省略表前缀,
表名 类名
tp_user User.php
tp_user_level UserLevel
$user = User::get(1);用模型名字根据主键查记录
如果Model类名和表名不一致
protected $name = 'admin' 换真表名不带前缀
protected $table = 'tp_account_log' 带前缀
新增
在控制器直接new的时候,需要建相应的model(空的都行)并且引入(use)一下
$user = new User; 注意是new的对象而不是静态查询的结果集对象
$user -> email = '30292510@qq.com';
$user -> mobile = '13097730978';
$user -> save(); //这个save()方法是Model层的父类中的方法,想用就得use 相应Model
下同
$user = new User; 注意是new的对象而不是静态查询的结果集对象
$a = [
'email' => '30292510@qq.com',
mobile => '13097730978',
];
$user -> create($a);
批量新增
$user = new User; 注意是new的对象而不是静态查询的结果集对象
$list = [
['email' => '31292510@qq.com',mobile => '13097730978'],
['email' => '3029250@qq.com',mobile => '13597730978'],
['email' => '3292510@qq.com',mobile => '17997730978'],
];
$user -> saveAll($list);
查询
控制器中操作,需要use对应的Model类
$user = User::get(1);
echo $user->email;对象形式调用
echo $user->mobile;
echo $user['email'];数组形式也可以
也可以getbyXxx()方法(不是主键字段也可用) 返回对象/数组
$user = getbyMobile('13097731972');
$user = getbyEmail('30292510@qq.com');
也可以传入数组
User::get(['name'=>'libai']);
User::where('mobile','13097731972');
User::where(['mobile'=>'13097731972','name'=>'lisa']);
这里讲一下save()方法,对于save()方法,
$user = Userr::get(1);静态方法返回的对象调用save()为update()操作,因为$user在调用save()前会先去查询记录
$user -> isUpdate(false) -> save(); 这样就是insert操作了;
$user = new User,new出来的对象调用save()方法为insert方法,
更新
$user['mobile'] = '13097731972';
$user['email'] = '30292510@qq.com';
User::update($user,['userid',1]);
删除
$user = User::get(1);
$user->delete();
User::destroy(1);这种方法需要传主键
网友评论