首页 > 解决方案 > Eloquent 无法保存新对象:缺少 Illuminate\Database\Eloquent\Model::setAttribute() 的参数 2

问题描述

我将 Eloquent 用作独立包,在创建新对象时出现错误(但在保存现有对象时没有)。

测试用例:

$contact = new Carriercontact;
$contact->fname = 'test1';
$contact->save();

模型:

<?php
use \Illuminate\Database\Eloquent\Model as Eloquent;

class Carriercontact extends Eloquent {

    // const CREATED_AT = 'create_dt'; // todo: add this
    const CREATED_AT = false;

    const UPDATED_AT = 'lst_chg';

    protected $primaryKey = 'CarrContID';

    public function company()
    {
        return $this->hasOne('Carrier', 'CarrID', 'CarrID');
    }

    public function getName()
    {
        ob_start();
        if ( ! empty($this->salute)) echo trim($this->salute).' ';
        if ( ! empty($this->fname)) echo trim($this->fname).' ';
        if ( ! empty($this->minit)) echo trim($this->minit).' ';
        if ( ! empty($this->lname)) echo trim($this->lname);
        return trim(ob_get_clean());
    }
}

桌子:

CREATE TABLE `carriercontacts` (
    `CarrContID` INT(11) NOT NULL AUTO_INCREMENT,
    `CarrID` INT(11) NULL DEFAULT NULL,
    `compno` VARCHAR(12) NULL DEFAULT NULL,
    `salute` VARCHAR(8) NULL DEFAULT NULL,
    `fname` VARCHAR(20) NULL DEFAULT NULL,
    `lname` VARCHAR(25) NULL DEFAULT NULL,
    `minit` VARCHAR(1) NULL DEFAULT NULL,
    `phone` VARCHAR(20) NULL DEFAULT NULL,
    `faxno` VARCHAR(14) NULL DEFAULT NULL,
    `cell` VARCHAR(15) NULL DEFAULT NULL,
    `after_hrs` VARCHAR(20) NULL DEFAULT NULL,
    `email` VARCHAR(75) NULL DEFAULT NULL,
    `comments` LONGTEXT NULL,
    `lst_chg` DATETIME NULL DEFAULT NULL,
    `chg_by` VARCHAR(10) NULL DEFAULT NULL,
    `is_deleted` TINYINT(1) UNSIGNED NULL DEFAULT '0',
    PRIMARY KEY (`CarrContID`),
    INDEX `CarrID` (`CarrID`),
    INDEX `lname` (`lname`, `fname`, `minit`)
);

错误:

消息:array_key_exists():第一个参数应该是字符串或整数文件名:Eloquent/Model.php 行号:2649

消息:缺少 Illuminate\Database\Eloquent\Model::setAttribute() 的参数 2,在 /home/umpbiz/www/_dev/cargosystems/application/vendor/illuminate/database/Illuminate/Database/Eloquent/Model.php 中调用第 2439 行并定义文件名:Eloquent/Model.php 行号:2430

严重性:警告消息:isset 中的偏移类型非法或为空文件名:Support/Str.php 行号:356

然后错误只是级联并且页面锁定。

其他模型/表格没有问题,有人知道我缺少什么吗?

标签: phplaraveleloquent

解决方案


CREATED_AT不能falsenull改用:

const CREATED_AT = null;

推荐阅读