장고 (Python) 배경에서 왔고 요즘 나는 Laravel (PHP)을 기반으로하는 프로젝트에서 작업하고 있습니다. 자동으로 데이터베이스 테이블을 생성하는 것과 같은 옵션이 있습니까?Django의 'python manage syncdb'처럼 Laravel에서 자동으로 데이터베이스 테이블을 만들 수 있습니까?
답변
예, Schema Builder 및 Migrations을 사용합니다.
먼저 당신은 DB로 마이그레이션 테이블을 설치해야합니다
$ php artisan migrate:install
다음 application/migrations
에 PHP 파일을 만듭니다 마이그레이션
$ php artisan migrate:make create_users_table
이를 만듭니다. 새 마이그레이션을 생성하고 실행해야합니다 당신은 지금 즉
<?php
class Create_Users_Table
{
public function up()
{
Schema::create('users', function($table)
{
$table->increments('id');
$table->string('username');
$table->string('email');
$table->string('phone')->nullable();
$table->text('about');
$table->timestamps();
});
}
public function down()
{
Schema::drop('users');
}
}
원하는 설정을 가지고
$ php artisan migrate
데이터베이스 구조를 변경할 때마다 사용하여 실행을 편집 할 수 있습니다 나중에.
는<?php
class Users_Table_Add_Hometown
{
public function up()
{
Schema::table('users', function($table)
{
$table->string('hometown');
$table->drop_column('phone');
});
}
public function down()
{
Schema::table('users', function($table)
{
$table->string('phone')->nullable();
$table->drop_column('hometown');
});
}
}
이제 두 마이그레이션이 당신이 users
포함하는 새 파일을 새 마이그레이션
$ php artistan migrate:make users_table_add_hometown
을 만들 것 hometown
대신 phone
의 새 열을 가지고 편집 할 말 , 하나는 테이블을 만들고 하나는 테이블을 수정합니다.
artisan migrate
명령은 시스템에 처음 사용되는 마이그레이션 만 수행 할만큼 똑똑합니다. 그래서 당신의 동료가 긴 휴가를 보낸 후 집으로 돌아오고 몇 가지 새로운 마이그레이션이 있었다면, 그는 떠난 후에 생성 된 것들만 자동으로 가져옵니다.
한가지 더. create table의 정의에 약간의 오류가있을 때, 테이블은 데이터베이스에 생성되지만 마이그레이션을 롤백 할 때 drop (나는 수동으로 drop하기 위해 mysql에 가야한다.) 아이디어가 없습니까? –
'up()'과'down()'마이그레이션 기능을 잘 설명하지 않았습니다. –
또한 마이그레이션 파일 이름에서 날짜를 제거하지 않는 것이 중요합니다. 그들은 처형되는 순서를 결정합니다. –
내 대답이 도움이됩니까? 그렇다면 그것을 받아 들일 수 있습니까? –