ThinkPHP6.0学习笔记-模型操作 (2)

第二步:新增数据

public function index() { $user = new model\UserModel(); $user->username = \'诸葛大力\'; $user->password = \'gouzaizai\'; $user->gender = \'女\'; $user->email = \'chengguo@gmail.com\'; $user->price = 100 ; $user->uid = 0000; $user->details = \'000\'; $user->save(); }

上述的只是一个普通方法,除此还有传递数据数组的方式

public function index() { $user = new model\UserModel(); $data = [ \'username\' => \'诸葛大力\', \'password\' => \'gouzaizai\', \'gender\' => \'女\', \'email\' => \'chengguo@gmail.com\', \'price\' => 100 , \'uid\' => 0000, \'details\' => \'000\', ]; $user->save($data); } allowField()限制写入允许字段 $user // 限制只允许写入‘username、password’字段 ->allowField([\'username\',\'password\']) ->save($data); replace()新增

实现REPLACE into新增(修改新增)

$user->replace()->save($data);

如果$data数据表已存在会更新;

REPLACE INTO `tp_user` SET `id` = 301 , `username` = \'诸葛大力\' , `password` = \'gouzaizai\' , `gender` = \'女\' , `email` = \'chengguo@gmail.com\' , `price` = 100 , `uid` = 0 , `details` = \'000\' , `create_time` = \'2020-04-10 11:40:20.660840\' , `update_time` = \'2020-04-10 11:40:20.660840\' 获取自增ID $user->id; $user->uid; …… 批量新增数据saveAll() *

可以批量添数据,返回新增数组

$user = new User; $list = [ [\'name\'=>\'thinkphp\',\'email\'=>\'thinkphp@qq.com\'], [\'name\'=>\'onethink\',\'email\'=>\'onethink@qq.com\'] ]; $user->saveAll($list);

saveAll方法新增数据返回的是包含新增模型(带自增ID)的数据集对象。

saveAll方法新增数据默认会自动识别数据是需要新增还是更新操作,当数据中存在主键的时候认为是更新操作。

静态方法 create() * $user = UserModel::create([ \'username\' => \'李白\', \'password\' => \'123\', \'gender\' => \'男\', \'email\' => \'libai@163.com\', \'price\' => 100, \'details\' => \'123\', \'uid\' => 1011 ], [\'username\', \'password\', \'details\'], false);

参数 1 是新增数据数组,必选
参数 2 是允许写入的字段,可选
参数 3 为是否 replace 写入,默认 false 为 Insert 写入

新增数据的最佳实践原则:使用create方法新增数据,使用saveAll批量新增数据。

删除-delete() 删除当前模型 $user = new User(); $user->delete(); 根据主键删除 User::destroy(1); User::destroy([1,2,3]); 条件删除 User::where(\'id\',10)->delete(); User::destroy(function($query){ $query->where(\'id\',10); });

删除的最佳实践原则是:如果删除当前模型数据,用delete方法,如果需要直接删除数据,使用destroy静态方法。

更新

使用find()方法获取数据,通过save()方法提交修改

$user = new model\UserModel(); $data = [ \'username\' => \'诸葛大力\', \'gender\' => \'女\' ]; $user->find(305)->save($data);

使用where()方法结合find()方法设置查询条件并获取数据

$user = new model\UserModel(); $data = [ \'username\' => \'齐天大圣\' ]; $user->where(\'username\',\'孙悟空\') ->find()->save($data);

save()只会更新数据有区别的地方;强制使用save()更新数据需要使用force()

Db::raw()执行SQL函数方法同样可以实现更新

$user = model\UserModel::find(305); $user->price = Db::raw(\'price+10\'); $user->save();

使用allowField()方法,允许要更新的字段

$user = model\UserModel::find(305); $data = [ \'username\' => \'李白\', \'password\' => \'123\', \'gender\' => \'男\', \'email\' => \'libai@163.com\', \'price\' => 100, \'details\' => \'123\', \'uid\' => 1011 ]; $user->allowField([\'username\'])->save($data);

使用saveAll()方法可以批量修改数据,返回被修改数据集;批量saveAll()更新只可以通过主键来进行

静态方法::update()更新

$data = [ \'username=> \'李白\', \'password\' => \'123\', \'gender\' => \'男\', \'email\' => \'libai@163.com\', \'price\' => 100, \'details\' => \'123\', \'uid\' => 1011 ]; model\UserModel::update($data,[\'id\'=> 304],[\'username\']);

参数 1 是数据数组,必选
参数 2 更新条件,可选
参数 3 是允许写入的字段,可选

save()

模型的新增、更新都需要save()进行执行,具有自动识别;

实例化模型后调用save()表示新增,查询数据后调用save()表示修改

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdsyy.html