2013-06-21 19 views
6

İlk Laravel 4 uygulamamı ayarlıyorum ve özellikler alan adlarının varchar (36) olmasını ve bir UUID olmasını gerektiriyor. Etkili KullanmaBirincil anahtar olarak UUID kullanarak Laravel 4

, örnek bir tablo için benim göçler şuna benzer: Kullanıcıların tablo oluşturdu alır zaman

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(); 
}); 

, kimliği alan PK, veya benzersiz olarak tanımlanmadı. Varchar (36) NOT NULL olarak tanımlanır.

Bu, geçişi çalıştırdığım sırada neden oluyor?


Benim orijinal soru UUIDs kullanma hakkında, ama duyu başka durumda herkes benim Kullanıcılar modeline bu ekleyerek bu yazı görür çözmüş: Burada

protected $hidden = array('password'); 

protected $fillable = array('id', 'first_name', 'last_name', 'email', 'password'); 

bir ekleme benim yoldur kullanıcı (Ben UUID oluşturmak için bir işlev kullanıyorum):

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

için değiştirilmelidir> birincil()? –

+0

EVET! Bir cevap ver. – Jazzy

+0

UUID oluşturmak için hangi işlevi kullanıyorsunuz? Laravel'e özel mi yoksa yerleşik mi? – Mike

cevap

8

Bu çizgiyi

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

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