【Laravel】テーブルリストを取得する
こんにちは、フリーランスエンジニアの太田雅昭です。
Laravelでテーブル一覧を取得する
テーブル一覧取得は、以下のSQLコマンドで行えます。
SHOW TABLES
これをLaravelで書くと、
use Illuminate\Support\Facades\DB;
$tables = DB::select('SHOW TABLES');
となります。返り値にDB名が含まれているため、欲しいDBのテーブルを抽出します。
$tables = array_map(function ($table) {
$key = 'Tables_in_' . env('DB_DATABASE');
return $table->$key ?? null;
}, $tables);
$tables = array_filter($tables);
これでテーブル一覧を取得できました。特定のカラムを持つものを抽出する場合は、さらに以下のようにします。
use Illuminate\Support\Facades\Schema;
$tables = array_filter($tables, function ($table) {
return Schema::hasColumn($table, 'user_id');
});
このあたり、ChatGPT様だけに頼ってると痛い目を見ますね。結局自分で検索した方が、正しい情報に辿り着けることも多いです。