创建具有少量行的表,并在laravel中进行迁移

时间:2016-11-09 12:53:12

标签: php mysql laravel migration laravel-5.3

我想创建一个只保存10行数据的表。如何通过Laravel 5.3中的migration进行操作?

3 个答案:

答案 0 :(得分:1)

Laravel 5.3提供了seeding,也与model factories结合使用。我猜你正在使用Eloquent模型而不是查询构建器。

模型工厂

这是Laravel(https://laravel.com/docs/5.3/seeding#using-model-factories

的一个例子
factory(App\User::class, 10)->create();

此代码通过User Eloquent模型创建10个假用户。伪造用户的声明可以在database/factories/ModelFactory.php中完成。

幼苗

再次,来自Laravel(https://laravel.com/docs/5.3/seeding#writing-seeders)的部分例子。您可以直接从现有的DatabaseSeeder调用模型工厂(无需创建新的播种器)。

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
    */
    public function run()
    {
        factory(App\User::class, 10)->create();    
    }
}

运行

  • php artisan db:seed在现有表格结构中播种数据
  • php artisan migrate:refresh --seed用于完全重建数据库并运行播种机

完整的文档和示例,请参阅上面提供的链接。

答案 1 :(得分:0)

没有这样的限制。您可以像往常一样创建表,只需添加10行。如果您要求hwo向表中添加10行,请阅读seeding

此外,如果您只有10个简单行,请考虑使用config file。你可以这样做:

'my-data' => [
    1 => ['name' => 'John', 'age' => 30],
    2 => ['name' => 'Alan', 'age' => 40],
    ....
],

使用config('my-config.my-data')

访问此数据

答案 2 :(得分:0)

如果您希望毫无困难地将虚拟数据填入您的表格,您可以Faker Package使用 fzaninotto 。 这个过程就像

通过在终端运行以下命令(从项目的根目录)安装faker:

composer require fzaninotto/faker

然后在你的routes.php中,您可以像这样推送虚拟条目:

// Just for an example I am using route to demonstrate the general use
Route::get('/customers',function(){
    $faker = Faker\Factory::create();

    $limit = 10; // this value sets number of rows to be created

    // generate data by accessing properties
    for ($i = 0; $i < $limit; $i++) {
        User::create([ 
            'name' => $faker->name,
            'email' => $faker->email,
            'phoneNumber' => $faker->phoneNumber,
        ]);
    }
});

这会在你的表中创建总共10行的虚拟数据。希望这有帮助