2013-06-21 3 views
6

Je configure ma première application Laravel 4 et l'appel de spec pour que les champs id soient varchar (36) et soit un UUID.Laravel 4 utilisant UUID comme clé primaire

En utilisant Eloquent, mes migrations pour une table d'échantillons ressemble à ceci:

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

Lorsque la table des utilisateurs est créé, le champ id est pas défini comme PK, ou unique. Il est défini comme varchar (36) NOT NULL.

Pourquoi cela se produit-il lorsque je lance la migration?


Ma question initiale était sur l'utilisation UUID, mais je sens résolu qu'en ajoutant à mon utilisateur modèle au cas où quelqu'un d'autre voit ce post:

protected $hidden = array('password'); 

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

Voici mon itinéraire pour ajouter un utilisateur (J'utilise une fonction pour créer l'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

-> primaire ou -> primaire()? –

+0

OUI! Faites-en une réponse. – Jazzy

+0

Quelle est la fonction que vous utilisez pour générer l'UUID? Est-il personnalisé ou intégré à Laravel? – Mike

Répondre

8

Cette ligne

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

doit être changé pour

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