【问题标题】:Laravel 4.2 Eloquent create: Array to string conversion errorLaravel 4.2 Eloquent 创建:数组到字符串转换错误
【发布时间】:2017-02-15 14:57:05
【问题描述】:

我正在使用 Laravel 4.2.* 我有一个 User 模型,其中 insert() 方法正常工作,但是当我使用 create() 方法时它会抛出错误:

数组到字符串的转换

我的模特:

class User extends Eloquent{

    public $table = 'users';
    protected $primaryKey = 'user_id';
    protected $fillable = ['first_name', 'last_name', 'created_by'];

    public function insertUserInfo($data)
    {
        //return self::insert($data); //working with no error but not adding `created_at`
        return self::create($data); //Array to string conversion
    }
}

样本数据:

$data = [
    'first_name' => 'Jhon',
    'last_name' => 'Doe',
    'created_by' => Auth::id() // var_dump(Auth::id()) => int(11)
];

如果有人可以帮助我了解create() 抛出错误的原因,那将会很有帮助。

PHPv5.6.3

已编辑
我可以保证$data 中没有数组值。同样的$datainsert() 一起工作,但在使用create()save() 方法时抛出错误。

【问题讨论】:

  • var_dump($data) 也许有些事情不是你想的那样。
  • @aynber:是的,我已经检查过了,但是所有字段都符合预期,而且相同的数据集正在使用insert 方法。
  • 也许Auth::id() 正在返回一个数组...
  • @NetGuy: var_dump(Auth::id()) => int(11).
  • 你为什么不使用$user = new User($data);然后$user->save();

标签: php laravel laravel-4


【解决方案1】:

添加array类型提示:

 public function insertUserInfo(array $data)
 {
    return self::create($data);
 }

【讨论】:

  • 试过了,但是成功了,还是报错。
猜你喜欢
  • 2016-09-01
  • 2017-05-10
  • 2016-10-18
  • 2019-05-01
  • 2022-01-25
  • 1970-01-01
  • 2022-01-05
  • 2014-12-14
  • 2018-09-11
相关资源
最近更新 更多