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 le modèle comme
protected $table = "admin";
Y a-t-il quelque chose de similaire pour la clé primaire?
$primarykey
devrait être$primaryKey
(lettre majuscule K) et ne fonctionnera pas autrement.$primaryKey = array('key1', 'key1');
github.com/laravel/framework/issues/5517#issuecomment-52996610mais
notez la lettre K (majuscule) sur la variable $ primaryKey
la source
Si vous souhaitez utiliser une clé composite (une chaîne)
Vous devez vous assurer que vous définissez
public $incrementing = false
sinon laravel convertira le champ en un entier, ce qui donne0
la source
La variable de clé primaire est sensible à la casse et doit
$primaryKey
fonctionner.Exemple:
protected $primaryKey = 'your_primary_key_id';
Exemple dans une classe Model:
la source
Selon la documentation Laravel:
Eloquent supposera également que chaque table a une colonne de clé primaire nommée
id
. Vous pouvez définir une$primaryKey
propriété 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 un entier. Si vous souhaitez utiliser une clé primaire non incrémentielle ou non numérique, vous devez définir la
$incrementing
propriété publique de votre modèle sur false.la source
Pour attribuer une clé primaire, vous devez ..->
la source