首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Model::create或Model->save()上出现Laravel - Array to string转换错误

在Model::create或Model->save()上出现Laravel - Array to string转换错误
EN

Stack Overflow用户
提问于 2014-12-17 19:48:54
回答 3查看 27.6K关注 0票数 8

我正在执行一个简单的插入,我已经执行了很多次,没有任何问题,并且由于一些奇怪的原因它不工作,我得到了这个错误消息:

代码语言:javascript
复制
error: {type: "ErrorException", message: "Array to string conversion",…}
file: "C:\wamp\www\studentreg2\vendor\laravel\framework\src\Illuminate\Database\Grammar.php"
  line: 33
  message: "Array to string conversion"
  type: "ErrorException"

下面是我的代码:

代码语言:javascript
复制
$advisorCheck = AdvisorCheck::create([
            'status'         => Input::get('status'),
            'application_id' => Input::get('id'),
            'user_id'        => Auth::id()
        ]);

AdvisorCheck模型使用的advisor_check表的迁移看起来很好,所有外键都是无符号的,并且在phpmyadmin中正确地显示了关系,来自输入::get的所有值都是字符串,模型将正确的字段设置为可填充的(status,application_id,user_id)。

我甚至尝试过在php artisan tinker中这样做:

代码语言:javascript
复制
AdvisorCheck::create([ 'status' => 'returned', 'application_id' => '3', 'user_id' => '4']);

我得到了这个响应:数组到字符串的转换

我也尝试过这种方法,并得到了相同的错误:

代码语言:javascript
复制
$advisorCheck                 = new AdvisorCheck;
$advisorCheck->status         = Input::get('status');
$advisorCheck->application_id = Input::get('id');
$advisorCheck->user_id        = Auth::id();
$advisorCheck->save();

型号代码:

代码语言:javascript
复制
<?php

class AdvisorCheck extends \Eloquent {

    protected $fillable = ['status', 'application_id', 'user_id'];

    protected $table = ['advisor_check'];
}

如果您需要查看更多代码,请联系我们。

非常感谢任何能提供帮助的人!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-17 20:13:51

如您在表属性中所示的示例中所示,Laravel docs属性是一个字符串,而不是一个数组

代码语言:javascript
复制
protected $table = 'advisor_check';

这是完全有道理的,因为雄辩的模型本身并不支持多个表。

票数 24
EN

Stack Overflow用户

发布于 2014-12-17 20:14:18

$table应为字符串而不是数组

代码语言:javascript
复制
<?php

   class AdvisorCheck extends \Eloquent {

   protected $fillable = ['status', 'application_id', 'user_id'];

   protected $table = 'advisor_check';
}
票数 2
EN

Stack Overflow用户

发布于 2021-12-31 07:42:34

如果我们在laravel模型中给出表名,比如array:

代码语言:javascript
复制
 protected $table = ['thoughts'];

那么它就会产生错误。

因此,您应该以字符串形式给出表名,如下所示:

代码语言:javascript
复制
protected $table = 'thoughts';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27524908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档