Laravel播种不填写字段(Laravel Seeding Does not Fill in Fi

2019-09-02 14:45发布

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

 class ContactTableSeeder extends Seeder { public function run() { $contacts = array( array( 'first_name' => 'Test', 'last_name' => 'Contact', 'email' => 'test.contact@emai.com', 'telephone_number' => '0111345685', 'address' => 'Address', 'city' => 'City', 'postcode' => 'postcode', 'position' => 'Director', 'account_id' => 1 ) ); foreach ($contacts as $contact) { Contact::create($contact); } } } 

当我运行PHP的工匠迁移:刷新--seed它的种子数据库,并创建在联系人表中的相关记录,但它不与任何的种子数组中的信息满山遍野。 我使用其他表完全一样的语法和他们很好地工作,而且我也检查了每场彻底,以确保它们匹配的数据库字段,但无论我做什么也不会正确地播种。

有没有人有什么想法?

Answer 1:

我有这个同样的问题,但没有上述解决方案为我工作。 原来,是由于我的模型有一个构造函数! 我删除此之后它工作得很好!

public function __construct()
{
    parent::__construct();
}

编辑:在这进一步看完后,我发现这个问题是由于这样的事实,如果你要在您的模型必须接受属性参数,并将其传递给父构造函数。 如果你这样做,那么构造不破DB播种(也可能是其他的东西)。 我希望这样可以节省别人头疼。

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


Answer 2:

原来的问题是在我的模型关系的事情。

对于这个问题将来用户:一定要检查所有的功能在你的模型定义hasOne /的hasMany /等关系。 阅读虽然雄辩文档为多。



Answer 3:

你有$this->call("ContactTableSeeder")在DatabaseSeeder类的run()函数?

如果你有ContactTableSeeder在它自己的文件,是文件名为ContactTableSeeder.php到底是什么? 如果不是,它会失败根据加载PSR-0标准。

这是我的第一个想法。



Answer 4:

你有没有试过替换以下行:

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

DB::table('contact')->insert($contacts);

假设你的表名是接触 。 而且,要确保你有这样一行

$this->call('ContactTableSeeder');

DatabaseSeeder类。



文章来源: Laravel Seeding Does not Fill in Fields