Changer la clé primaire par défaut dans Eloquent

Puis-je changer la clé primaire du modèle Eloquent.

Je veux définir la clé primaire par exemple admin_id au lieu de ‘id’?

Je sais que je peux changer le nom de la table pour un modèle comme

 protected $table = "admin"; 

Y a-t-il quelque chose de similaire pour la clé primaire?

Oui

 class User extends Eloquent { protected $primaryKey = 'admin_id'; } 
 class User extends Eloquent { protected $primarykey = 'admin_id'; } 

mais

 class User extends Eloquent { protected $primaryKey = 'admin_id'; } 

notez la lettre K (capitale) sur la variable $ primaryKey

La variable de clé primaire est sensible à la casse et doit être $primaryKey pour fonctionner.

Exemple:

protected $primaryKey = 'your_primary_key_id';

Exemple dans une classe de modèle:

 class User extends Eloquent { protected $primaryKey = 'your_primary_key_id'; } 
 class User extends Eloquent { protected $primaryKey = 'admin_id'; } 

Selon la documentation de Laravel:


Eloquent supposera également que chaque table a une colonne de clé primaire nommée id . Vous pouvez définir une propriété $primaryKey pour remplacer cette convention.

De plus, Eloquent suppose que la clé primaire est une valeur entière incrémentée, ce qui signifie que, par défaut, la clé primaire sera automatiquement convertie en int. Si vous souhaitez utiliser une clé primaire non incrémentée ou non numérique, vous devez définir la propriété public $incrementing sur votre modèle sur false.

Si vous voulez utiliser une clé composite (une chaîne)

Vous devez vous assurer que vous définissez public $incrementing = false sinon laravel lancera le champ sur un entier, donnant 0

 class User extends Model { protected $primaryKey = 'my_ssortingng_key'; public $timestamp = false; } 

Pour atsortingbuer une clé primaire, vous devez ..->

 class User extends Eloquent { protected $primaryKey='admin_id'; }