模型内置的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
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

如果你想在单个查询中执行多个「新增或更新」,那么应该使用 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']);
2年前 评论
讨论数量: 13

create里传一维数组

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

->create() 不能批量插入

 AuthAgent::query()->insert($agentInfo);
2年前 评论
Efrain (楼主) 2年前
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']);
2年前 评论

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

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

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

}
2年前 评论
KuangBenDeWoNiu

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

2年前 评论

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