По существу, у меня такая же проблема, как у этого парня, минус префикс таблицы. Поскольку у меня нет префикса таблицы, его исправление не работает. 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.
Что я делаю неправильно с внешним ключом?