就像在laravel中,我们使用Migrations来创建表,然后Seeders将表种子出来,但没有得到它的好处,因为我们可以通过普通的方式去PHPMYADMIN,然后我们需要这样做,因为我们为它编码了很多行,但是我们如何证明这些代码行的合理性呢?
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateItemsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('items', function(Blueprint $table)
{
$table->increments('id');
$table->integer('owner_id');
$table->string('name');
$table->boolean('done');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('items');
}
}的确,移植是由php手工命令创建的,但是它们的好处是什么呢?因为我们有一个替代者来做这个?对于Seeder文件,我们为它编写了许多行代码。
class ItemTableSeeder extends Seeder{
public function run(){
DB::table('items')->delete();
$items= array(
array(
'owner_id' => '1',
'name' => 'Watch The Spectacular Now',
'done' => True
),
array(
'owner_id' => '2',
'name' => 'Watch Avengers',
'done' => False
),
array(
'owner_id' => '1',
'name' => 'Watch The Iron man',
'done' => False
),
array(
'owner_id' => '1',
'name' => 'Divergent',
'done' => False
),
array(
'owner_id' => '1',
'name' => 'Bat Man',
'done' => False
),
array(
'owner_id' => '1',
'name' => 'X-Men Days Of Future Past',
'done' => False
)
);
DB::table('items')->insert($items);
}
}发布于 2014-05-03 12:13:45
迁移和种子是数据库版本控制。想象一下,有一天你会爱上PostgreSQL或者MySQL以外的任何东西。然后想象一下,您想要对多行数据进行一些测试。您会运行PHPMYADMIN的等价物并插入100、1000或10000行吗?
现在来看看这个:
// migration
class CreateCommentsTable extends Migration {
public function up()
{
Schema::create('comments', function(Blueprint $table) {
$table->increments('id');
$table->string('body');
$table->integer('author_id')->unsigned();
$table->integer('post_id')->unsigned();
$table->timestamps();
});
}
// seeder
class CommentsTableSeeder extends Seeder {
public function run()
{
Eloquent::unguard();
$faker = Faker::create();
foreach(range(1, 1000) as $index)
{
Comment::create([
'body' => $faker->sentence(10),
'author_id' => rand(1,20),
'post_id' => rand(1,150)
]);
}
}Faker是一个很好的工具,你可以在这里找到:https://github.com/fzaninotto/Faker
现在所需要做的就是运行artisan migrate --seed。
当然,与自动种子相比,还有更多的优点,您可以使用迁移来修改表,以防您想要更改模式等等。
发布于 2014-05-03 12:10:37
主要的好处是您将在您的开发服务器/站点中这样做,并且您可以在开发、迁移、回滚迁移和重新迁移中多次更改模式,并且一旦应用程序完成,您就不必记住在您的生产环境中必须做什么,Laravel将自动为您做这件事。
使用PHPMyAdmin,您必须在本地和远程服务器中手动创建表和编辑字段,并且可能会忘记一些东西并破坏应用程序。而且,如果您有多个服务器服务您的应用程序,那么问题就更大了。
发布于 2015-11-19 15:03:59
迁移文件维护表的架构。使用迁移,您可能不必使用phpMyAdmin (创建DB除外)。完成之后,您可以简单地运行命令‘迁移’,并从PHP端本身创建表。此外,您也不必担心DB环境(MySql、Posgres、Sql等),因为迁移并不真正依赖于要迁移表的环境。
种子有助于在应用程序中创建不同的角色(管理、用户、编辑器等)。您只需创建种子程序文件并运行'php artisan db:seed‘命令将数据从php端填充到表中。此外,种子有助于创建测试数据。
https://stackoverflow.com/questions/23444124
复制相似问题