Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel播种机提升';未找到列';关于虚拟列_Laravel_Eloquent_Model_Laravel Seeding - Fatal编程技术网

Laravel播种机提升';未找到列';关于虚拟列

Laravel播种机提升';未找到列';关于虚拟列,laravel,eloquent,model,laravel-seeding,Laravel,Eloquent,Model,Laravel Seeding,我有一个自定义属性的用户模型, 连接firstName和lastName的属性name: class User extends Authenticatable { /** * @var array */ protected $fillable = ['firstName', 'lastName']; protected $appends = [ 'name' ]; public function getNameAtt

我有一个自定义属性的用户模型, 连接
firstName
lastName
的属性
name

class User extends Authenticatable
{
    /**
     * @var array
     */
    protected $fillable = ['firstName', 'lastName'];

    protected $appends = [
        'name'
    ];

    public function getNameAttribute(){
        return $this->attributes['firstName'] . ' ' . $this->attributes['lastName'];
    }
}
我还与
模型有多对多关系

问题是,当我尝试进行播种时:

factory(App\Group::class, 30)
    ->create()
    ->each(function ($group) {
        $group->users()->createMany(factory(App\User::class, 3)->make()->toArray());
    });
我得到一个例外:

 SQLSTATE[42S22]: Column not found: 1054 Unknown column 'name' in 'field list'
我的工厂:


$factory->define(User::class, function (Faker $faker) {

    return [
        'firstName' => $faker->firstName,
        'lastName' => $faker->lastName,
   ];
});
当我注释
name
属性时,它工作正常。
谢谢。

不要将用户集合转换为数组。这将序列化模型,在您的示例中,您将附加
name
属性,该属性是一个访问器,不存在

当涉及到播种时,你的模型已经没有防护,所以填充/防护不起作用

由于您有要添加到关系中的模型实例(尚未保存),因此应该使用
saveMany
而不是
createMany

$group->users()->saveMany(factory(App\User::class, 3)->make());
这样,您就不会将模型序列化到一个数组中,该数组将添加
name
字段,您不想尝试保存该字段,因为该字段是“虚拟”字段


虽然我不完全确定您是如何建立这种关系的。

请分享您的用户工厂您是否尝试将“name”放在
$filleble
中?他无法将“name”放在filleble中,没有真正的名为“name”@Wiguna-erright的列。我的错我真的不知道什么是
$appends
。我用我的母语读了一些文章,说如果访问器方法必须是camelCase,
$appends
属性必须是snake\u case,这就是OP所做的。您好,我添加了
UserFactory