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 (capital) 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 est convertie automatiquement 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 souhaitez utiliser une clé composite (une chaîne)
Vous devez vous assurer que vous avez défini public $incrementing = false
sinon laravel convertira le champ en un entier, donnant 0
class User extends Model {
protected $primaryKey = 'my_string_key';
public $timestamp = false;
}