嘿,我刚刚开始用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';
}
模型就在那里,数据库就位,我可以访问设置表。我运行播种机,没有任何反应。我被愚弄了。谢谢!
答案 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。