J'utilise ClosureTable pour Laravel. et j'ai un problème avec la migration.Impossible de migrer dans Laravel4 à l'aide de ClosureTable
C'est ce que mon script de migration ressemble:
// script de migration Page_Closure
public function up()
{
Schema::table('page_closure', function(Blueprint $table)
{
$table->engine = 'InnoDB';
Schema::create('page_closure', function(Blueprint $t)
{
$t->increments('ctid');
$t->integer('ancestor', false, true);
$t->integer('descendant', false, true);
$t->integer('depth', false, true);
//problem after this line.
$t->foreign('ancestor')->references('id')->on('pages');
$t->foreign('descendant')->references('id')->on('pages');
});
});
}
Une erreur se produit lorsque la clé étrangère est créée. IDK pourquoi, mais en fonction de ma ma file de migration "fermeture de page" s'exécute d'abord avant le script "page".
[Illuminate\Database\QueryException]
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'page_closure' already exists (SQL: create table `page_closure` (`ctid` int unsign
ed not null auto_increment primary key, `ancestor` int unsigned not null, `descendant` int unsigned not null, `depth` int unsigned not null) defa
ult character set utf8 collate utf8_unicode_ci)
Hi Unnawut, ce script de migration a été généré après l'échafaudage. "php artisan closuretable: make --entity = page" J'ai utilisé ce paquet https://github.com/franzose/ClosureTable. Donc, il doit y avoir quelque chose de mal avec l'échafaudage pour générer un script de migration avec cette erreur. – olleh
@olleh Je pense que vous pourriez vouloir signaler un bug à eux alors. Il ne me semble pas correct d'avoir 'Schema :: table()' et 'Schema :: create()' du même nom de table l'un dans l'autre. Je pense que ce qui se passe dans le 'Schema :: table()' devrait être le nom de votre table d'entité, pas la table de fermeture. Peut-être que vous pouvez essayer de changer cela. – Unnawut