По сути, у меня та же проблема, что и у этого парня, за исключением префикса таблицы. Поскольку у меня нет префикса таблицы, его фикс не работает.http://forums.laravel.com/viewtopic.php?id=972
Я пытаюсь создать таблицу с помощью Laravel Schema Builder, например:
Schema::create('lessons', function($table)
{
$table->increments('id');
$table->string('title')->nullable();
$table->string('summary')->nullable();
$table->timestamps();
});
Schema::create('tutorials', function($table)
{
$table->increments('id');
$table->integer('author');
$table->integer('lesson');
$table->string('title')->nullable();
$table->string('summary')->nullable();
$table->string('tagline')->nullable();
$table->text('content')->nullable();
$table->text('attachments')->nullable();
$table->timestamps();
});
Schema::table('tutorials', function($table)
{
$table->foreign('author')->references('id')->on('users');
$table->foreign('lesson')->references('id')->on('lessons');
});
Проблема в том, что когда я запускаю этот код (в маршруте /setup ), я получаю следующую ошибку:
SQLSTATE[HY000]: General error: 1005 Can't create table 'tutorials.#sql-2cff_da' (errno: 150)
SQL: ALTER TABLE `tutorials` ADD CONSTRAINT tutorials_author_foreign FOREIGN KEY (`author`) REFERENCES `users` (`id`)
Bindings: array (
)
Основываясь на сообщениях в Интернете и ограниченной доступной документации о том, как настроить отношения Laravel Eloquent, я не уверен, что делаю неправильно...
users
уже существует, и у него есть поле id
, равное auto_increment
. Я также настраиваю свои модели с правильными отношениями(belongs_to
иhas_many
), но, насколько я могу судить, проблема не в этом --, а в настройке базы данных. БД — это InnoDB.
Что именно я делаю неправильно с внешним ключом?