나는 사용하여 테이블을 만들 수 있기를 원합니다
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;
코드 시작 부분에 사용 하는 것을 잊지 마십시오 ).