Я использую ClosureTable для Laravel. и у меня проблема с миграцией.Не удается мигрировать в Laravel4 с помощью ClosureTable
Это то, что мой сценарий миграции выглядит следующим образом:
// 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');
});
});
}
происходит ошибка при создании внешнего ключа. IDK почему, но на основе моей очереди миграции «закрытие страницы» выполняется раньше, чем «скрипт страницы».
[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, этот скрипт миграции был создан после строительных лесов. msgstr "Я использовал этот пакет https://github.com/franzose/ClosureTable. Таким образом, должно быть что-то не так с эшафотом для создания сценария миграции с этой ошибкой. – olleh
@olleh Я думаю, вы, возможно, захотите сообщить об ошибке для них тогда. Мне не кажется, что у меня есть 'Schema :: table()' и 'Schema :: create()' одного имени таблицы внутри друг друга. Я думаю, что в 'Schema :: table()' должно быть имя вашей таблицы сущностей, а не таблицы закрытия. Может быть, вы можете попробовать это изменить. – Unnawut