Мне нужно указать tables
в database
, я нашел запрос для
SHOW TABLES LIKE 'merTrans%'
получить таблицы, но как я могу использовать foreach
для получения имен таблиц в Laravel 5.1
?
Мне нужно указать 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;
}
Чтобы получить быстрый массив, содержащий все базы данных, вы можете использовать следующий фрагмент кода:
// Iterate over the results of SHOW TABLES
// strip off all the objects and keys.
$tables = array_map('reset', \DB::select('SHOW TABLES'));
Мне кажется, это самое элегантное решение.
Я использовал это:
$tables = DB::connection()->getDoctrineSchemaManager()->listTableNames();
Это требует доктрины /dbal как зависимости. Но некоторые функции миграции уже нуждаются в работе DBAL.
Для пользователей 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');
чтобы увидеть, с чем вы имеете дело.
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
}
Добавьте в проект Laravel текущую вещь: - В файле контроллера: -
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