tables
のdatabase
をリストする必要があります。次のクエリが見つかりました。
SHOW TABLES LIKE 'merTrans%'
テーブルを取得しますが、foreach
を使用してLaravel 5.1
のテーブル名を取得するにはどうすればよいですか?
データベース内のテーブルをリストするには、次のことができます
$tables = DB::select('SHOW TABLES');
foreach($tables as $table)
{
echo $table->Tables_in_db_name;
}
Db_nameをデータベースの名前に変更する必要があります。
編集:次のような場合
foreach ($tables as $table) {
foreach ($table as $key => $value)
echo $value;
}
私はこれを使用しています:
$tables = DB::connection()->getDoctrineSchemaManager()->listTableNames();
依存関係としてdoctrine/dbalが必要です。ただし、一部の移行機能を使用するにはDBALが既に必要です。
すべてのデータベースを含むクイック配列を取得するには、次のコードを使用できます。
// Iterate over the results of SHOW TABLES
// strip off all the objects and keys.
$tables = array_map('reset', \DB::select('SHOW TABLES'));
私には、これが最もエレガントなソリューションのようです。
Postgresユーザーの場合:
SHOW TABLES
はサポートされていないため、もう少しハッキーを実行する必要があります。
$tables = DB::select("SELECT table_schema,table_name, table_catalog FROM information_schema.tables WHERE table_catalog = 'YOUR TABLE CATALOG HERE' AND table_type = 'BASE TABLE' AND table_schema = 'public' ORDER BY table_name;")
必ずtable_catalogに入力してください(これはデータベースと同等です)。結果を少し調整する必要があるかもしれません。
Laravelで使用できます:
$tables = DB::select('SHOW TABLES');
$tables = \DB::select("SHOW TABLES LIKE 'merTrans%'");
foreach ($tables as $table) {
echo head($table);
}
まだコメントを追加する評判がないので、これを回答として投稿しています。
BharatのLIKE CASESの推奨事項
foreach ($tables as $table) {
echo array_shift(array_values($table));
}
二重foreachを使用したくないが、var_dump $ tableを確認する場合、
($tables = DB::select('SHOW TABLES');
あなたが何を扱っているかを正確に見るために。
Laravelプロジェクトに流れるものを追加します:-Controllerファイルに:-
public function debate_list(){
$records = DB::table('table_name')->get();
return view('page_link')->with('records',$records);
}
Page_link.blade.phpにフローを追加します:-
@foreach($records as $class)
<tr>
<td>{{$class->id}}</td>
<td>
{{$class->name}}
</td>
<td>
{{$class->image_url}}
</td>
<td>
{{ $class->created_at }}
</td>
<td>
<a class="btn btn-primary btn-sm " href="{{route('image_status_list')}}"> VIEW</a>
</td>
</tr>
@endforeach
protected function getNamesTablesDB(){
$database = Config::get('database.connections.mysql.database');
$tables = DB::select('SHOW TABLES');
$combine = "Tables_in_".$database;
$collection = new \Illuminate\Database\Eloquent\Collection;
foreach($tables as $table){
$collection->put($table->$combine, $table->$combine);
}
return $collection; //or compact('collection'); //for combo select
}
別の解決策は、DB名を使用する必要がないことです。 'current'は最初の列のみを取ります。
function getTables()
{
$tables = DB::select('SHOW TABLES');
$tables = array_map('current',$tables);
return $tables;
}