Je veux pouvoir créer une table en utilisant
Schema::create('mytable',function($table)
{
$table->increments('id');
$table->string('title');
});
Mais avant cela, je voudrais vérifier si le tableau existe déjà, peut-être quelque chose comme
Schema::exists('mytable');
Cependant, la fonction ci-dessus n'existe pas. Que puis-je utiliser?
Si vous utilisez Laravel 4 ou 5, il existe la méthode hasTable()
, vous pouvez le trouver dans le code source L4 ou dans la la documentation L5 :
Schema::hasTable('mytable');
Pour créer une nouvelle table, une seule vérification est effectuée par la fonction Laravel Schema hasTable
.
if (!Schema::hasTable('table_name')) {
// Code to create table
}
Mais si vous voulez supprimer une table avant de vérifier son existence, Schema a une fonction appelée dropIfExists
.
Schema::dropIfExists('table_name');
Il laissera tomber la table si la table existera.
Pas de fonction intégrée pour cela en L3. Vous pouvez faire une requête brute:
$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 …
}
Dépend plutôt de la requête du schéma d’information au lieu de rechercher certaines données dans les tables avec COUNT()
.
SELECT table_schema
FROM information_schema.tables
WHERE table_schema = DATABASE()
AND table_name = 'table_name';
Changez votre valeur 'table_name'
.
Si vous obtenez une sortie de ligne, cela signifie que la table existe.