6

我正在设置我的第一个 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();
});

创建 users 表时,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);
}); 
4

1 回答 1

8

这条线

$table->string('id', 36)->primary;

必须改为

$table->string('id', 36)->primary();
于 2013-06-21T19:07:45.233 回答