模型内置的create批量赋值方法无法将数据正确插入数据库

1. 运行环境

1). 当前使用的 Laravel 版本?

9.2

2). 当前使用的 php/php-fpm 版本?

PHP 版本:8

php-fpm 版本:8

3). 当前系统

windows

4). 业务环境

5). 相关软件版本

2. 问题描述?

这是我要 插入的数据
模型内置的create批量赋值方法无法将数据正确插入数据库

           AuthAgent::query()->create($agentInfo);
    /**
     * Define table name
     *
     * @var string
     */
    protected $table = 'ctrl_auth_agent';

    /**
     * Define a primary key
     *
     * @var string
     */
    protected $primaryKey = 'id';



    /**
     * 不可以批量赋值的属性
     *
     * @var array
     */
    protected $guarded = [];

3. 您期望得到的结果?

4. 您实际得到的结果?

我想把数据插入数据库 可实际他进行了报错 如果将黑名单 改为白名单 虽然可以进行插入 但是数据库的数据依旧是空的

模型内置的create批量赋值方法无法将数据正确插入数据库

模型内置的create批量赋值方法无法将数据正确插入数据库

CollinAi
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

如果你想在单个查询中执行多个「新增或更新」,那么应该使用 upsert 方法。该方法的第一个参数包含要插入或更新的值,而第二个参数列出了在关联表中唯一标识记录的列。该方法的第三个也是最后一个参数是一个列数组,如果数据库中已经存在匹配的记录,则应该更新这些列。如果在模型上启用了时间戳,upsert 方法将自动设置 created_at 和 updated_at 时间戳:

Flight::upsert([
    ['departure' => 'Oakland', 'destination' => 'San Diego', 'price' => 99],
    ['departure' => 'Chicago', 'destination' => 'New York', 'price' => 150]
], ['departure', 'destination'], ['price']);
3年前 评论
讨论数量: 13

create里传一维数组

AuthAgent::query()->create([
 'xx' => 1
]);
3年前 评论
Efrain (楼主) 2年前
Efrain (楼主) 3年前
php_yt 3年前
Coloynle (作者) 3年前

->create() 不能批量插入

 AuthAgent::query()->insert($agentInfo);
3年前 评论
Efrain (楼主) 3年前
24K大白羊 2年前
24K大白羊 2年前

如果你想在单个查询中执行多个「新增或更新」,那么应该使用 upsert 方法。该方法的第一个参数包含要插入或更新的值,而第二个参数列出了在关联表中唯一标识记录的列。该方法的第三个也是最后一个参数是一个列数组,如果数据库中已经存在匹配的记录,则应该更新这些列。如果在模型上启用了时间戳,upsert 方法将自动设置 created_at 和 updated_at 时间戳:

Flight::upsert([
    ['departure' => 'Oakland', 'destination' => 'San Diego', 'price' => 99],
    ['departure' => 'Chicago', 'destination' => 'New York', 'price' => 150]
], ['departure', 'destination'], ['price']);
3年前 评论

在平凡的一点 就是我用create 添加数据 就是name 进不去

        $category = ['name'=>11111];
        CategoryModel::query()->create($category);
2年前 评论
class CategoryModels {

    protected $fillable = ['name']; //加上这个试试

}
2年前 评论
KuangBenDeWoNiu

遇到同样的问题了,改成insert了,知道原因的大佬子给指点指点

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!