Laravel播种机默默地失败了

时间:2014-06-09 00:02:41

标签: laravel seed

嘿,我刚刚开始用laravel移动,我似乎无法让播种机工作。随后的代码无声地失败:

DatabaseSeeder.php

<?php
class DatabaseSeeder extends Seeder {
    public function run()
    {
        Eloquent::unguard();
        $this->call('SettingsTableSeeder');
        // $this->call('GenericTableSeeder');
        // $this->call('UserTableSeeder');
    }

}

SettingsTableSeeder.php

<?php
class SettingsTableSeeder extends Seeder {

   public function run()
   {
       $settings = Settings::create(array(
          'adPriceStandard' => 9
       ));
   }
}

设置模型(Settings.php):

<?php
class Settings extends Eloquent {
protected $table = 'settings';
}

模型就在那里,数据库就位,我可以访问设置表。我运行播种机,没有任何反应。我被愚弄了。谢谢!

4 个答案:

答案 0 :(得分:0)

您可以发布Settings型号吗?你在延长Eloquent吗? Eloquent可能会根据您的班级名称查找表settingss。您可以在Settings模型中设置表格的名称,如下所示:

protected $table = 'settings';

答案 1 :(得分:0)

这就是我写我的播种机的方式 - 它与你的有点不同 - 看看这是否有效;

<?php
class SettingsTableSeeder extends Seeder {

   public function run()
   {
       $settings = array('adPriceStandard' => 9);
       DB::table('settings')->insert($settings);
   }
}

答案 2 :(得分:0)

我假设您正在使用早期的laravel 5.1版本。您错过了Eloquent::reguard()。此外,使用::create([])时,请确保使用此功能添加的所有字段均为fillable。有关迁移的更多信息,请参阅docs

PS。这是随机猜测,你可以在Settings::create(array(中包含Settings类的命名空间吗?虽然我确定这样的问题会引发课程未被发现的异常。

答案 3 :(得分:0)

发现此帖并遇到类似问题的任何人都应记住两件事。

首先,确保你运行'composer dump-autoload'。

第二,确保你要么: A)有$ table-&gt; timestamps();在模型的数据库迁移中,或

B)设置public $ timestamps = false;在你的Model类中。

如果省略$ table-&gt; timestamps();并且忘记将public $ timestamps设置为false,db:seed将以静默方式失败。

如果您在上述问题之后仍然遇到问题,请在/ test处创建一个新路由,并在其中包含您的Model :: create([..])代码。这应该抛出一个可见的QueryException。