6

I have a database seed file:

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);
        }
    }
}

When I run php artisan migrate:refresh --seed it seeds the database and creates the relevant record in the contacts table, except that it does not fill the fields with any of the information in the seed array. I am using the exact same syntax for other tables and they work fine, and I've also checked each field thoroughly to make sure they match the database fields but no matter what I do it will not seed correctly.

Does anyone have any ideas?

4

4 回答 4

14

我遇到了同样的问题,但上述解决方案都不适合我。原来是因为我的模型中有一个构造函数!在我删除它之后它工作正常!

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

编辑:在进一步阅读后,我发现问题是由于如果要在模型中包含构造函数必须接受属性参数并将其传递给父级。如果你这样做,那么构造函数不会破坏数据库种子(可能还有其他事情)。我希望这可以避免其他人头疼。

public function __construct($attributes = array())
{
    parent::__construct($attributes);
}
于 2015-11-15T05:32:26.590 回答
1

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

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

于 2013-05-12T15:42:35.333 回答
0

您是否尝试过替换以下行:

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

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

假设您的表名是contact。而且,确保你有这样的线

$this->call('ContactTableSeeder');

在您的DatabaseSeeder类中。

于 2013-05-11T14:01:15.697 回答
0

$this->call("ContactTableSeeder")的 DatabaseSeeder 类的run()功能中有吗?

如果您有ContactTableSeeder自己的文件,该文件的名称ContactTableSeeder.php是否准确?如果不是,它将无法根据PSR-0 标准加载。

这些是我最初的想法。

于 2013-05-11T14:08:39.140 回答