Я настраиваю свое первое приложение Laravel 4, и спецификации требуют, чтобы поля id были varchar (36) и были UUID.
Используя Eloquent, мои миграции для таблицы примеров выглядят следующим образом:
Schema::create('users', function($table) { $table->string('id', 36)->primary; $table->string('first_name', 50); $table->string('last_name', 50); $table->string('email')->unique(); $table->string('password', 60); $table->timestamps(); $table->softDeletes(); });
Когда создается таблица пользователей, поле id не определено как PK или уникально. Он определяется как varchar (36) NOT NULL.
Почему это происходит, когда я запускаю миграцию?
Мой первоначальный вопрос касался использования UUID, но я решил, что добавив это в модель моих пользователей, если кто-то еще увидит это сообщение:
protected $hidden = array('password'); protected $fillable = array('id', 'first_name', 'last_name', 'email', 'password');
Вот мой маршрут для добавления пользователя (я использую функцию для создания UUID):
Route::post('signup', function() { $userdata = array( 'id' => gen_uuid(), 'first_name' => Input::get('first_name'), 'last_name' => Input::get('last_name'), 'email' => Input::get('email'), 'password' => Hash::make(Input::get('password')) ); $user = new User($userdata); $user->save(); return View::make('login/login')->with('userdata', $userdata); });
Эта строка
$table->string('id', 36)->primary;
Должно быть изменено на
$table->string('id', 36)->primary();