Laravel没有种子表

时间:2014-04-20 18:40:55

标签: php laravel laravel-4

我试图让我的表格用初始数据播种,以便在Laravel 4.1中开始开发工作,但没有一个是播种。

例如,当我在下面运行php artisan db:seed时,我会得到输出Seeded: ItemsTableSeeder

use Faker\Factory as Faker;

class ItemsTableSeeder extends Seeder {

    public function run()
    {
        $f = Faker::create();

        foreach(range(1, 10) as $index)
        {
            $price = round(rand(5, 100) + (rand(0, 99) / 10), 2);
            $name = $f->sentence(6);
            $shortname = explode(' ', $name, 3);

            Item::create([
                'sku'       => strtoupper(str_random(16)),
                'name'      => $name,
                'shortname' => implode(' ', array_slice($shortname, 0, 3)),
                'stock'     => rand(0, 100),
                'price'     => $price,
                'cost'      => round($price / rand(2, 3), 2),
                'weight'    => rand(0, 20) + (rand(1, 9) / 10),
                'width'     => rand(1, 20),
                'height'    => rand(1, 20),
                'length'    => rand(1, 20),
                'size'      => array_rand(['Standard', 'Oversized'], 1),
                'enabled'   => 'Y'
            ]);
        }
    }

}

但是,MySQL Workbench中的快速SELECT显示该表仍为空。我有这个设置在任何其他表之前播种,因为items之后的表必须执行查找以从该表引用项目ID以创建自己的种子。当他们无法找到任何项目ID时,它会在此之后打破剩下的种子。

2 个答案:

答案 0 :(得分:2)

detectEnvironment()中的bootstrap/start.php设置未正确覆盖,因此默认sqlite文件中默认为app/config/database.php。播种发生在默认的sqlite数据库文件中。

我曾使用dev代替local作为开发服务器的密钥。

答案 1 :(得分:0)

对于将来来到这里的用户:

您需要将要创建的每个种子类添加到DatabaseSeeder.php中,如下所示:

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        // Add every single seeder class here
        $this->call(UserSeeder::class);
        $this->call(NewsSeeder::class);
    }
}

只有在运行php artisan db:seed时它们才会被调用。