Maison  >  Article  >  cadre php  >  laravel indique qu'il n'y a pas de clé primaire

laravel indique qu'il n'y a pas de clé primaire

PHPz
PHPzoriginal
2023-05-21 10:26:06763parcourir

Lorsque vous utilisez Laravel pour des opérations de base de données, vous rencontrez parfois un problème courant : pas de clé primaire. En effet, dans le modèle par défaut de Laravel, la clé primaire est automatiquement supposée être id. S'il n'y a pas de champ id dans la base de données ou si le champ n'est pas défini comme clé primaire, une erreur d'absence de clé primaire sera générée.

Alors, comment résoudre le problème de l'absence de clé primaire ? Ce qui suit présentera les solutions du point de vue de la base de données et du modèle Laravel respectivement.

1. Solution de base de données

  1. Définir la clé primaire

Dans la base de données MySQL, vous pouvez utiliser l'instruction ALTER TABLE pour modifier la structure de la table, y compris la définition de la clé primaire. Exemple :

ALTER TABLE 表名 ADD PRIMARY KEY(字段名);

Parmi eux, le nom de la table et le nom du champ doivent être remplacés par vous-même.

  1. Créer une nouvelle clé primaire

S'il n'y a pas de champ de clé primaire approprié dans la base de données, vous pouvez résoudre le problème en créant un nouveau champ de clé primaire. Exemple :

ALTER TABLE 表名 ADD 字段名 INT AUTO_INCREMENT PRIMARY KEY;

Parmi eux, le nom de la table et le nom du champ doivent être remplacés par vous-même. AUTO_INCREMENT indique que le champ est auto-incrémenté.

2. Solution du modèle Laravel

  1. Personnaliser la clé primaire

Dans le modèle Laravel, vous pouvez personnaliser la clé primaire via l'attribut $primaryKey. Exemple :

class User extends Model
{
    protected $primaryKey = 'user_id';
}

Ici, la clé primaire est définie sur user_id.

  1. Désactiver les clés primaires à incrémentation automatique

Si vous utilisez une clé primaire à incrémentation automatique, vous devez définir la propriété $incrementing sur false pour désactiver les clés primaires à incrémentation automatique. Exemple :

class Product extends Model
{
    public $incrementing = false;
}
  1. Spécifiez manuellement la valeur de la clé primaire

Dans certains scénarios spécifiques, vous devrez peut-être spécifier manuellement la valeur de la clé primaire. Ceci peut être réalisé en définissant les propriétés $keyType et $fillable dans le modèle. Exemple :

class Order extends Model
{
    protected $keyType = 'string';
    protected $fillable = ['order_id', 'product_name'];
}

Ici, le type de clé primaire est défini sur chaîne et les champs à remplir sont définis.

Résumé

Grâce aux méthodes ci-dessus, vous pouvez résoudre le problème de l'absence de clé primaire dans le modèle Laravel. En développement réel, les méthodes correspondantes peuvent être sélectionnées en fonction de besoins spécifiques. Dans le même temps, il faut veiller à garantir l’unicité de la clé primaire afin d’éviter d’éventuels conflits.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:tableau laravel en jsonArticle suivant:tableau laravel en json