Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 10.09.2012 11:04:06

Проблема при работе с Schema

Пытаюсь создать таблицы с использование класса Schema и связать их через внешний ключ. Подскажите где я ошибся.

     Schema::create('users', function($table){
       $table->increments('iduser');
       $table->string('nick');
       $table->string('fio')->unique();
       $table->integer('uid')->unsigned();
       $table->text('descr');
       $table->timestamps();  
    });
       
    Schema::create('systems', function($table){
       $table->increments('idsystem');
       $table->integer('uid');
       $table->integer('iduser');
       $table->text('descr');
       $table->timestamps(); 
       $table->foreign('iduser')->references('iduser')->on('users');
    });

Message:

SQLSTATE[HY000]: General error: 1005 Can't create table 'laraveltutorial.#sql-f3c_27' (errno: 150)

SQL: ALTER TABLE `systems` ADD CONSTRAINT systems_iduser_foreign FOREIGN KEY (`iduser`) REFERENCES `users` (`iduser`)

Bindings: array (
)

Не в сети

#2 10.09.2012 11:30:57

Re: Проблема при работе с Schema

Вы с MySQL работаете? Она поддерживает внешние ключи только при использовании InnoDB (не MyISAM).

Не в сети

#3 10.09.2012 12:19:59

Re: Проблема при работе с Schema

От себя еще добавлю. Внешние ключи в MySQL (InnoDB) используются для обеспечения целостности данных. Сами же связи контролируютя моделью. Поэтому я бы посоветовал сначала определить связи в приложении, а потом, если необходимо, закрепить эти связи в базе (если используется InnoDB).
По поводу ошибки - скорее всего, у вас не достаточно определен  $table->integer('iduser'), попробуйте дать ему свойства unsigned NOT NULL.

Изменено oleg578 (10.09.2012 12:27:28)

Не в сети

#4 11.09.2012 10:08:21

Re: Проблема при работе с Schema

Спасибо за советы.

Не в сети

Подвал раздела