[php] Laravel에 데이터베이스 테이블이 있는지 감지하는 방법이 있습니까?

나는 사용하여 테이블을 만들 수 있기를 원합니다

Schema::create('mytable',function($table)
{
    $table->increments('id');
    $table->string('title');
});

그러나 그 전에 테이블이 이미 존재하는지 확인하고 싶습니다.

Schema::exists('mytable');

그러나 위의 기능은 존재하지 않습니다. 그 밖에 무엇을 사용할 수 있습니까?



답변

Laravel 4 또는 5를 사용하는 경우 hasTable()방법 이 있으며 L4 소스 코드 또는 L5 문서 에서 찾을 수 있습니다 .

Schema::hasTable('mytable');


답변

새 테이블을 생성하려면 Laravel Schema 함수에 의한 검사가 하나뿐입니다 hasTable.

if (!Schema::hasTable('table_name')) {
    // Code to create table
}

그러나 존재를 확인하기 전에 테이블을 삭제하려면 Schema에라는 함수가 dropIfExists있습니다.

Schema::dropIfExists('table_name');

테이블이 존재하면 테이블을 삭제합니다.


답변

다른 연결을 사용하는 경우 내 대답으로 이동해야합니다.

Schema::connection("bio_db")->hasTable('deviceLogs_11_2019')

여기 hasTable()함수에서 둘 이상의 테이블 이름을 전달할 수 있습니다.


답변

L3에는 내장 기능이 없습니다. 원시 쿼리를 수행 할 수 있습니다.

$table = "foo";
$check = DB::only('SELECT COUNT(*) as `exists`
    FROM information_schema.tables
    WHERE table_name IN (?)
    AND table_schema = database()',$table);
if(!$check) // No table found, safe to create it.
{
    // Schema::create …
}


답변

대신 .NET Framework를 사용하여 테이블의 일부 데이터를 확인하는 대신 정보 스키마 쿼리에 의존하십시오 COUNT().

SELECT table_schema
FROM information_schema.tables
WHERE table_schema = DATABASE()
      AND table_name = 'table_name';

'table_name'가치를 변경하십시오 .

하나의 행 출력을 얻으면 테이블이 있음을 의미합니다.


답변

Phill Sparks가 대답했듯이 다음을 사용하여 테이블이 존재하는지 확인할 수 있습니다.

Schema::hasTable('mytable')

앱에서 다른 연결을 사용하는 경우가 있습니다. 이 경우 다음을 사용해야합니다.

Schema::connection('myConnection')->hasTable('mytable')

( use Schema;코드 시작 부분에 사용 하는 것을 잊지 마십시오 ).


답변