thinkphp 模型的curd
1.新增
1.1 典型做法
$user = new User; $data = Request::only(['name','email']); $user->save($data);
//返回true和false
$user = new User; // post数组中只有name和email字段会写入
//使用allowField来指定允许的字段 true为表中的字段
$user->allowField(['name','email'])->save($_POST);
1.2 使用静态方法
// 只允许写入name和email字段的数据 $user = User::create([ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com' ], ['name', 'email']); echo $user->name; echo $user->email; echo $user->id; // 获取自增ID
2 修改
2.1查询后修改
使用的数据的update方法返回的是受影响的行数 update为数据库的方法 不触发 钩子方法等事件
User::where('id', 1)
->update(['name' => 'thinkphp']);
使用事件为模型的方法
//查询后修改 这种方法也比较推荐 也会使用到事件
$user = User::get(1); $user->name = 'thinkphp'; $user->email = 'thinkphp@qq.com'; $user->save();
2.2直接修改(都会触发事件)
2.2.1 模型方法
$user = new User(); // post数组中只有name和email字段会写入 $data = Request::only(['name','email']); $user->save($data, ['id' => 1]);
2.2.2 使用静态方法
User::update(['id' => 1, 'name' => 'thinkphp']);
删除
delete方法查询后删除会触发钩子函数
$user = User::get(1); $user->delete();
destroy方法直接传入主键不触发钩子函数等事件
User::destroy(1);
查询
获取单个
// 取出主键为1的数据 $user = User::get(1); echo $user->name; // 使用查询构造器查询满足条件的数据 $user = User::where('name', 'thinkphp')->find(); echo $user->name;
V5.1.23+版本开始,可以使用findOrEmpty方法,当查询数据不存在的话,返回空模型而不是Null。
使用get和find都是返回模型对象可以当数组使用
查询多个
// 使用查询构造器查询 $list = User::where('status', 1)->limit(3)->order('id', 'asc')->select(); foreach($list as $key=>$user){ echo $user->name; } 查询构造器方式的查询可以支持更多的连贯操作,包括排序、数量限制等。 V5.1.21+版本开始,可以在all方法之前使用Db类的查询链式操作, // 使用查询构造器查询 $list = User::where('status', 1)->limit(3)->order('id', 'asc')->all(); foreach($list as $key=>$user){ echo $user->name; }