忽然今天莫名其妙遇见一个问题 setAttribute ()

Missing argument 2 for Illuminate\Database\Eloquent\Model::setAttribute();

这个问题今天才遇见,

我是用eloquent 去new 一个 对象,然后存入到database

之前的都可以

今天$item->save() 就会出现这个。

然后数据库里还成功的生成了数据。

问题在哪里?

查了查说是和update有关

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 6
leo

目测是new的时候传入的数组有问题

7年前 评论
咖啡是個軟件猴

@leo 发现问题了, 问题在 我在model里写如 protected $primaryKey = false; 我把这一行删了就OK了 ,具体是为什么 还是不太懂

7年前 评论
咖啡是個軟件猴

WTF, 今天第二次遇见这个问题, Google后发现这个链接, 看完之后发现是自己发的。
时隔半年,还是没有发现这个问题的解决途径在哪里。

6年前 评论

这个问题我也出现了,是没有主键时需要在model里边设定

public $incrementing = false;

// 调用save是会呼叫
// 
    protected function performInsert(Builder $query, array $options = [])
    {
        ...
        if ($this->getIncrementing()) {
            $this->insertAndSetId($query, $attributes);
        }
    }

    protected function insertAndSetId(Builder $query, $attributes)
    {
        $id = $query->insertGetId($attributes, $keyName = $this->getKeyName());
        // 此时 $keyName = null,变成会循环调用
        $this->setAttribute($keyName, $id);
    }
6年前 评论

我刚遇到这个问题,我是一个模型叫$task,然后定义了一个数组也叫$task[],然后同名了引起的,检查是不是这个问题。

6年前 评论

我是(new Object())->fill([])这样的时候也报一样的错误,然后一直在找错误没找到 不断var_dump 检查数据 发现都没有问题,过了一会非常奇怪的就ok了

5年前 评论

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