Laravel の migration は便利なのですが、テーブルのスキーマ定義が、Laravel の命令だけで解決できない事があります。
例えば、「テーブル名にコメントを付ける」といった命令は用意されていないため、実行したい場合は DBドライバごとの固有のコマンドを使用する必要があります。( Laravel 8 時点)
具体的には、DB::statement メソッドにて、ALTER TABLE コマンドを実行します。
しかし、ALTER TABLE コマンドは、ほとんどの場合、RDB固有のコマンドとなってしまうため、migration の本流に載せるのは避けたい。
そんな感じで、「データベースドライバが MySQL の時だけ実行したい」または「SQLite の時だけ実行したい」といった場合、getDriverName() にて、データベースドライバを名を取得して、識別する方法があります。
具体的には、以下のようなコード。
public function up() { if (DB::getDriverName() !== 'mysql') { return; } DB::statement("ALTER TABLE `users` COMMENT 'ユーザマスタ'"); }
上記の場合、MySQL の時のみ、ALTER TABLE コマンドを実行します。
(SQLite の場合、DB::getDriverName() にて 'sqlite' という値を取得します。)
コードを書く場合、変に switch文で分岐させるよりも、個別のドライバ用に migration ファイルを用意して、該当のドライバでなければ早期リターンする、という構造がいいんじゃないかと思います。