ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] #### Db用法 ~~~ Db::table('user') ->insert([ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com', ]); ~~~ #### 模型用法 ~~~ $user = new User; $user->name = 'thinkphp'; $user->email = 'thinkphp@qq.com'; $user->save(); ~~~ 或者批量设置 ~~~ $user = new User; $user->save([ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com', ]); ~~~ 上面两种方式等效,当你的模型数据比较多不想一一赋值的时候,可以使用后者。 如果你通过外部提交赋值给模型,并且希望指定某些字段写入,可以使用: ~~~ $user = new User($_POST); // post数组中只有name和email字段会写入 $user->allowField(['name','email'])->save(); ~~~ 如果需要过滤非数据表字段的数据,可使用: ~~~ $user = new User($_POST); // 过滤post数组中的非数据表字段数据 $user->allowField(true)->save(); ~~~ #### 获取自增ID 也许你咋一看还觉得麻烦了,又是实例化又是赋值的,但好处多多,慢慢你就会体会到了,看起来是一个简单的赋值和保存操作其实内里大有乾坤,可以触发很多处理甚至事件。 save方法的返回值不是自增主键的值(和Db的execute方法一样返回影响的记录数),要获取自增主键的值可以使用下面的方式: ~~~ $user = new User; $user->name = 'thinkphp'; $user->email = 'thinkphp@qq.com'; $user->save(); // 获取用户的主键数据 echo $user->id; ~~~ 可以使用静态方法创建数据 ~~~ $user = User::create([ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com', ]); echo $user->id; echo $user->name; ~~~ 和save方法不同,create方法的返回值是User模型的对象实例,而save方法调用的时候本身就在对象实例里面。 很多开发者不习惯静态调用,这里必须说明的是模型类的静态CURD操作其实都是内部自动实例化而已,所以说白了提供的这些静态操作方法只是对动态CURD操作方法的静态封装罢了。 #### 创建操作用法小结 | 方法 | 返回值 | | --- | --- | | save(动态)| 影响的记录数 | | create(静态) | 模型对象实例 |