企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
>[danger]data($data) 这个方法Model和Query都存在,分别返回自己所在的类对象即$this >允许字段Model是allowField(['name','email']); Query是field(['name','email'],false) 排除字段Model是except(['name','email']); Query是field(['name','email'],true) ## **Query:** **添加单条数据** ``` //insert 方法添加成功,返回值是影响记录的行数 $data = ['foo' => 'bar', 'bar' => 'foo']; Db::table('think_user')->insert($data); //或者直接使用insertGetId方法新增数据并返回主键值: Db::name('user')->insertGetId($data); ``` **增加多条** ``` //insertAll 方法添加数据成功,返回影响记录的行数 $data = [ ['foo' => 'bar', 'bar' => 'foo'], ['foo' => 'bar1', 'bar' => 'foo1'], ['foo' => 'bar2', 'bar' => 'foo2'] ]; Db::name('user')->insertAll($data); ``` 快捷更新方法`data`,可以配合`insert`使用。 ~~~ Db::table('data') ->data(['name'=>'tp','score'=>1000]) ->insert(); ~~~ ## **Model:** **新增一条数据**save()和::create() ~~~ save() save方法新增数据返回的是写入的记录数。 $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; $user->data(['name'=>'thinkphp', 'email'=> 'thinkphp@qq.com'])->save(); //同 $user = new User(['name'=>'thinkphp', 'email'=> 'thinkphp@qq.com']); $user->save(); ::create() 和save方法不同的是, create方法返回的是当前模型的对象实例。 create方法时isUpdate(false)与save()的组合体 $user = User::create([ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com' ]); ~~~ 获取自增ID ``` // 获取自增ID echo $user->id; //如果你的主键不是`id`,而是`user_id`的话 echo $user->user_id; ``` allowField的参数为true时,过滤非数据表字段的数据 ~~~ $user = new User($_POST); // 过滤post数组中的非数据表字段数据 $user->allowField(true)->save(); ~~~ 注意不要在同一个实例里面多次新增数据,如果确实需要多次新增,那么可以用下面的方式: ~~~ $user = new User; $user->name = 'thinkphp'; $user->email = 'thinkphp@qq.com'; $user->save(); $user->name = 'onethink'; $user->email = 'onethink@qq.com'; // 第二次开始必须使用下面的方式新增 $user->isUpdate(false)->save(); ~~~ **增加多条** ~~~ $user = new User; $list = [ ['name'=>'thinkphp','email'=>'thinkphp@qq.com'], ['name'=>'onethink','email'=>'onethink@qq.com'] ]; //saveAll方法新增数据返回的是包含新增模型(带自增ID)的数据集(数组)。 $user->saveAll($list); ~~~