ThinkPHP6.0中新增数据推荐用模型save()方法或create()静态方法。需先创建对应模型,支持驼峰转换;save()可实例化后赋值或数组批量保存,create()一步完成并返回实例;均需处理false失败情况并可结合事务与日志调试。

在 ThinkPHP6.0 中,使用模型新增数据非常直接,核心是调用模型的 save() 方法或静态的 create() 方法。前提是已正确定义模型类并关联对应的数据表。
1. 确保模型已正确创建
例如,假设有一张 user 表,需先生成对应模型:
- 执行命令:
php think make:model User - 生成的
app\model\User.php默认继承think\Model,会自动匹配表名user(支持配置修改) - 如字段含下划线(如
last_login_time),模型默认开启驼峰命名转换,可直接用lastLoginTime
2. 使用 save() 方法新增(推荐)
先实例化模型,再赋值并保存:
$user = new \app\model\User(); $user->name = '张三'; $user->email = 'zhangsan@example.com'; $user->status = 1; $result = $user->save(); // 返回影响行数(成功为1)
也可用数组批量赋值(需开启 allowField 或确保字段在 $schema 中):
立即学习“PHP免费学习笔记(深入)”;
$user = new \app\model\User();
$user->save([
'name' => '李四',
'email' => 'lisi@example.com',
'status'=> 1
]);
3. 使用 create() 静态方法一步完成
更简洁,适合简单场景:
$user = \app\model\User::create([
'name' => '王五',
'email' => 'wangwu@example.com',
'status'=> 1
]);
// $user 是已保存的模型实例,可直接获取自增ID:$user->id
注意:create() 默认会过滤非数据表字段,若需严格控制,可在模型中定义 $schema 或使用 allowField 参数:
\app\model\User::create($data, ['allowField' => ['name','email','status']]);
4. 处理返回与异常
新增操作可能失败(如唯一索引冲突、必填字段为空),建议判断结果:
-
save()和create()成功返回模型对象(create)或影响行数(save),失败返回false - 可配合数据库日志或
getLastSql()排查问题:\think\facade\Db::getLastSql() - 如需事务,请用
Db::transaction()包裹多个模型操作



















