2013-06-21 35 views
6

Tôi đang thiết lập ứng dụng Laravel 4 đầu tiên của mình và thông số kỹ thuật cho các trường id là varchar (36) và là UUID.Laravel 4 sử dụng UUID làm khóa chính

dùng hùng hồn, sự di cư của tôi cho một bảng mẫu trông như thế này:

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

Khi bảng người dùng được tạo ra, các trường id không được định nghĩa như PK, hoặc độc đáo. Nó được định nghĩa là varchar (36) NOT NULL.

Tại sao điều này xảy ra khi tôi chạy quá trình di chuyển?


câu hỏi ban đầu của tôi là về việc sử dụng UUIDs, nhưng tôi có cảm giác giải quyết rằng bằng cách thêm này để mô hình Người dùng tôi trong trường hợp bất cứ ai khác nhìn thấy bài đăng này:

protected $hidden = array('password'); 

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

Đây là tuyến đường của tôi cho thêm một người dùng (tôi đang sử dụng một chức năng để tạo ra các 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

-> chính hoặc -> primary()? –

+0

CÓ! Làm cho câu trả lời đó. – Jazzy

+0

Bạn đang sử dụng chức năng nào để tạo UUID? Có tùy chỉnh hoặc được xây dựng trong Laravel không? – Mike

Trả lời

8

dòng này

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

Phải được thay đổi thành

$table->string('id', 36)->primary(); 
Các vấn đề liên quan