2013-06-21 163 views
6

我正在設置我的第一個Laravel 4應用程序,並且規範要求將id字段設置爲varchar(36)並且是UUID。使用UUID作爲主鍵的Laravel 4

使用侃侃而談,我遷移了一個示例表看起來是這樣的:

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); 
}); 
+3

- >伯或 - >初級()? –

+0

是的!做出答案。 – Jazzy

+0

你用什麼函數來生成UUID?它是定製還是內置於Laravel? – Mike

回答

8

此行

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

必須改變,以

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