Larabel 5.1에서 데이터베이스 내의 테이블리스트를 가져오는 방법
데이터베이스의 테이블을 나열해야 합니다. 이 쿼리를 찾았습니다.
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();
의존관계로서 교리/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
지원되지 않기 때문에 좀 더 hackey를 실행해야 합니다.
$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);
}
또 다른 해결책은 DB 이름을 사용할 필요가 없다는 것입니다.'current'는 첫 번째 열만 받습니다.
function getTables()
{
$tables = DB::select('SHOW TABLES');
$tables = array_map('current',$tables);
return $tables;
}
모든 테이블에 이행 변경을 적용해야 하는 경우.
인 라라벨 6Schema::getAllTables()
공개 방법이 되었기 때문에 다음과 같은 작업을 수행할 수 있습니다.
$tables = array_filter(
Schema::getAllTables(),
static function ($table) {
return preg_match('/some_(\d+)_table/', $table->{'Tables_in_' . env('DB_DATABASE')});
}
);
foreach ($tables as $table ) {
Schema::table(
$table->{'Tables_in_' . env('DB_DATABASE')},
static function (Blueprint $table) {
$table->removeColumn('request_id');
}
);
}
이는 다음과 같은 이름 구조를 가진 테이블을 사용하여 (위의 경우 열을 삭제) 작업을 수행해야 할 때 관련됩니다.some_1_table
,some_2_table
,some_3_table
, 등. 그러니까 기본적으로DB::select('SHOW TABLES');
이제 사용할 수 있습니다.Schema::getAllTables()
.
열이 있는 모든 테이블을 가져오려면 이 옵션을 사용합니다.
$schema = collect(DB::connection()->getDoctrineSchemaManager()->listTableNames())->map(function ($item, $key) {
return [
'name' => $item,
'columns' => DB::getSchemaBuilder()->getColumnListing($item)
];
});
저는 아직 댓글을 달 만한 평판이 없기 때문에 답글을 올립니다.
바라트의 LIKE CASE에 대한 권장 사항
foreach ($tables as $table) {
echo array_shift(array_values($table));
}
더블 포어치가 싫다면 반드시 var_forach $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"에서 데이터베이스의 테이블 목록 찾기
$tables_list = DB::select('SHOW TABLES');
foreach($tables_listas $value)
{
echo $value->Tables_in_YourDatabaseName;
}
'테이블_입력_'YourDatabaseName'은 다음을 의미합니다.예를 들어 데이터베이스 이름이 "test"일 경우
echo $value -> 테이블_in_test;
public function hiddenTables()
{
return [
'migrations',
'password_resets',
];
}
public function dbTables()
{
foreach (\Illuminate\Support\Facades\DB::select('SHOW TABLES') as $tables) {
foreach ($tables as $table => $value)
$db[] = $value;
}
return $db;
}
public static function diffTables()
{
return array_diff((new self)->dbTables(), (new self)->hiddenTables());
}
대신 information_schema.tables를 사용하여 테이블 이름 목록을 가져올 수 있습니다.
function getTableNames($db_name, $search = ''){
$rows = DB::select("SELECT table_name FROM information_schema.tables WHERE table_schema = '{$db_name}' AND table_name like '%{$search}%'");
$table_names = [];
foreach($rows as $row)
{
$table_names[] = $row->table_name;
}
return $table_names;
}
print_r(getTableName('my_db', 'merTrans'));
쿼리 작성기를 사용하는 사용자의 경우:
DB::table('sqlite_master')
->whereIn('type', [ 'table', 'view' ])
->where('name', 'NOT LIKE', 'sqlite_%')
->orderBy('1')
->pluck('name')
->all()
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
언급URL : https://stackoverflow.com/questions/33478988/how-to-fetch-the-tables-list-in-database-in-laravel-5-1
'source' 카테고리의 다른 글
php는 따옴표로 (101)를 삽입한다. (0) | 2022.11.28 |
---|---|
휴지 상태 오류: save()를 호출하기 전에 이 클래스의 ID를 수동으로 할당해야 합니다. (0) | 2022.11.28 |
단일 페이지 응용 프로그램: 장점과 단점 (0) | 2022.11.28 |
과도한 요소를 제거하는 고정 크기의 큐가 있습니까? (0) | 2022.11.28 |
Java는 Let's Encrypt 인증서를 지원합니까? (0) | 2022.11.28 |