Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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_Laravel 4_Migrate_Seeding - Fatal编程技术网

Laravel播种不会填满田地

Laravel播种不会填满田地,laravel,laravel-4,migrate,seeding,Laravel,Laravel 4,Migrate,Seeding,我有一个数据库种子文件: 当我运行php artisan migrate:refresh--seed时,它会为数据库种子并在contacts表中创建相关记录,只是它不会用种子数组中的任何信息填充字段。我对其他表使用了完全相同的语法,它们工作得很好,我还彻底检查了每个字段,以确保它们与数据库字段匹配,但无论我做什么,它都不会正确播种 有人有什么想法吗?您是否尝试替换以下行: foreach ($contacts as $contact) { Contact::create($contact

我有一个数据库种子文件:

当我运行php artisan migrate:refresh--seed时,它会为数据库种子并在contacts表中创建相关记录,只是它不会用种子数组中的任何信息填充字段。我对其他表使用了完全相同的语法,它们工作得很好,我还彻底检查了每个字段,以确保它们与数据库字段匹配,但无论我做什么,它都不会正确播种


有人有什么想法吗?

您是否尝试替换以下行:

foreach ($contacts as $contact) {
   Contact::create($contact);
}

假设您的表名为contact。 还有,确保你有这样的线路

$this->call('ContactTableSeeder');

在DatabaseSeeder类中。

在DatabaseSeeder类的
run()
函数中是否有
$this->调用(“ContactTableSeeder”)

如果您在自己的文件中有
contacttableeeder
,那么该文件名为
contacttableeeder.php
是否准确?如果没有,它将无法按照


这是我的第一个想法。

原来问题与我的模型中的关系有关


对于这个问题的未来访问者:确保检查模型中定义hasOne/hasMany/etc关系的所有函数。仔细阅读,了解更多信息。

我也有同样的问题,但上述解决方案都不适用于我。原来是因为我的模型中有一个构造函数!在我移除这个之后,它工作得很好

public function __construct()
{
    parent::__construct();
}
编辑: 在进一步阅读之后,我发现问题是由于这样一个事实,即如果要在模型中包含构造函数,必须接受attributes参数并将其传递给父级。如果这样做,那么构造函数不会破坏DB种子设定(可能还有其他事情)。我希望这能帮别人省去头痛

public function __construct($attributes = array())
{
    parent::__construct($attributes);
}

我的表名是contacts。我应该能够像在其他种子中一样使用Eloquent为数据库种子;它表示调用未定义的函数insert()。我用的是Laravel 4。我的答案错了。它应该是DB::table('contact')->insert($contacts);好的,您的语法错误,应该是DB::table('contacts')->insert($contacts);这是有效的,那么为什么雄辩不起作用。@Gaz-大规模任务保护可能会阻止它?我刚刚编辑了一个种子文件以匹配您的语法,它工作正常,尽管我的名为
tenattableseeder
。您是否尝试过
composer update
以获取最新版本的Laravel 4?我正在我的DatabaseSeeder class run()方法中调用$this->call('ContactTableSeeder'),文件名是正确的。我还运行了composer更新,没有错误。唯一使用这种语法的表是my users表。问题不在于调用种子,甚至不在于插入记录,而是插入它们,它们只是空的。将DatabaseSeeder.php文件的源粘贴到这里怎么样:还有,你的Contact.php和ContactTableSeeder.php文件?你能更详细地解释一下你的关系最终出现了什么问题吗?对不起,我不太记得了。我想这可能是因为我没有设置联系人模型。我只是遇到了这个问题。在我的例子中,我已经将它添加到用户模型中:
public function User(){return$this->hasOne('Manager','userid');}
但是它应该是一个
Manager()
函数。您只需要确保模型关系正确。是否在模型中设置了$fillable或$CURDED属性?如果没有,那么由于质量赋值,Laravel将不允许您使用::create()方法填充字段。检查这里-
public function __construct()
{
    parent::__construct();
}
public function __construct($attributes = array())
{
    parent::__construct($attributes);
}