SQLで作成したり元から存在するテーブルにも今後のためにmigrateファイルを作っておく。
単純に作るとSQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists ...
とマイグレートできないため、既にテーブルがあればスキップするようにマイグレーションファイルを修正する。
// 2015_12_12_000000_create_users_table.php
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
if (Schema::hasTable('users')) {
// テーブルが存在していればリターン
return;
}
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password', 60);
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('users');
}
}
if (Schema::hasTable('users'))
でテーブルが存在するか判定できる。
カラムが存在するかはif (Schema::hasColumn('users', 'email'))
でOK。
存在したらリターンする。
これで、マイグレーションをエラーなく実行できる。
参考
laravel newコマンドでbash:laravel:command not found
Laravelschedule2020-10-05
LaravelのModelsのディレクトリ構成を変更する
Laravelschedule2020-09-02
【Laravel】UserAgentでガラケー用のViewを切り替えるためのmiddleware
Laravelschedule2020-04-21
LaravelでCSRF保護からURIを除外する
Laravelschedule2020-01-23