Laravel에서 모든 데이터베이스 테이블 및 구조 가져오기

12933 단어 laravel프레임
데이터베이스에 있는 모든 이메일을 포함하는 필드를 수정해야 하는 테이블을 128자리로 변경해야 합니다.Laravel에서 모든 시계를 가져와서 이메일이 있는지 순환 판단합니다.코드는 다음과 같습니다.
use Illuminate\Support\Facades\Schema;
use DB;

public function getDatabaseColumns() {
    $tables = DB::select('show tables');
    $tables = array_column($tables, 'Tables_in_new_bcc_web');
    $columns = ['email', 'user_name', 'nick_name', 'first_name', 'last_name'];
    // dd(Schema::getConnection());
    foreach ($tables as $key => $value) {
        foreach ($columns as $k => $v) {
            if (Schema::hasColumn($value, $v)) {
                $table[] = $value;
            };
        }
        // $columns[] = Schema::getColumnListing('users');
    }
    $table = array_unique($table);
    dd($table);
}
Schema::getColumnListing('user');
Schema::hasColumn($table, $column_name)

현재 연결된 데이터베이스에 있는 모든 테이블을 한 번에 얻을 수 있는 더 좋은 방법이 있는지 알아보는 것보다 한 획 적어 두세요. 저는 원래 sql문장showtables로 모든 테이블을 찾아서 Tables_in_new_bcc_웹이라는 열을 얻은 후에야 모든 시계 이름을 얻고 다시 순환합니다.더 좋은 방법을 찾아라.
public function getDatabaseColumns() {
    $tables = array_map('reset', \DB::select('SHOW TABLES'));
    $columns = ['email', 'user_name', 'nick_name', 'first_name', 'last_name'];
    foreach ($tables as $key => $value) {
        foreach ($columns as $k => $v) {
            if (Schema::hasColumn($value, $v)) {
                $table[] = $value;
            };
        }
    }
    $table = array_unique($table);
    dd($table);
}

===== 업데이트 2020-01-22 ======

모든 테이블 가져오기

// 
$tables = DB::connection()->getDoctrineSchemaManager()->listTables();
// 
$table_names = DB::connection()->getDoctrineSchemaManager()->listTableNames();
foreach ($table_names as $key => $value) {
	// 
	$columns[] = DB::connection()->getDoctrineSchemaManager()->listTableColumns($value);
}

좋은 웹페이지 즐겨찾기