Heim  >  Artikel  >  PHP-Framework  >  Laravel meldet, dass kein Primärschlüssel vorhanden ist

Laravel meldet, dass kein Primärschlüssel vorhanden ist

PHPz
PHPzOriginal
2023-05-21 10:26:06763Durchsuche

Bei der Verwendung von Laravel für Datenbankoperationen stößt man manchmal auf ein häufiges Problem: kein Primärschlüssel. Dies liegt daran, dass im Standardmodell von Laravel automatisch davon ausgegangen wird, dass der Primärschlüssel id ist. Wenn in der Datenbank kein ID-Feld vorhanden ist oder das Feld nicht als Primärschlüssel festgelegt ist, wird die Fehlermeldung angezeigt, dass kein Primärschlüssel vorhanden ist.

Wie kann man also das Problem lösen, dass kein Primärschlüssel vorhanden ist? Die Lösungen werden aus der Perspektive der Datenbank bzw. des Laravel-Modells vorgestellt.

1. Datenbanklösung

  1. Legen Sie den Primärschlüssel fest

In der MySQL-Datenbank können Sie ALTER verwenden TABLE-Anweisung zum Ändern der Struktur der Tabelle, einschließlich der Festlegung des Primärschlüssels. Beispiel:

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

Darunter müssen der Tabellenname und der Feldname durch Sie selbst ersetzt werden.

  1. Erstellen Sie einen neuen Primärschlüssel

Wenn in der Datenbank kein passendes Primärschlüsselfeld vorhanden ist, können Sie das Problem lösen, indem Sie ein neues erstellen Primärschlüsselfeld. Beispiel:

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

Darunter müssen der Tabellenname und der Feldname durch Sie selbst ersetzt werden. AUTO_INCREMENT gibt an, dass das Feld automatisch inkrementiert wird.

2. Laravel-Modelllösung

  1. Benutzerdefinierter Primärschlüssel

Im Laravel-Modell können Sie $primaryKey übergeben Eigenschaften zum Anpassen des Primärschlüssels. Beispiel:

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

Hier ist der Primärschlüssel auf user_id gesetzt.

  1. Automatische Inkrementierung des Primärschlüssels deaktivieren

Wenn Sie einen nicht automatisch inkrementierenden Primärschlüssel verwenden, müssen Sie die $Inkrementierung festlegen Attribut auf „false“ setzen, um die automatische Inkrementierung des Primärschlüssels zu deaktivieren. Beispiel:

class Product extends Model
{
    public $incrementing = false;
}
  1. Primärschlüsselwert manuell angeben

In einigen spezifischen Szenarios müssen Sie den Primärschlüsselwert möglicherweise manuell angeben. Dies kann durch Festlegen der Eigenschaften $keyType und $fillable im Modell erreicht werden. Beispiel:

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

Hier wird der Primärschlüsseltyp auf String gesetzt und ausfüllbare Felder definiert.

Zusammenfassung

Mit der oben genannten Methode können Sie das Problem lösen, dass im Laravel-Modell kein Primärschlüssel vorhanden ist. In der tatsächlichen Entwicklung können entsprechende Methoden entsprechend den spezifischen Anforderungen ausgewählt werden. Gleichzeitig muss auf die Eindeutigkeit des Primärschlüssels geachtet werden, um mögliche Konflikte zu vermeiden.

Das obige ist der detaillierte Inhalt vonLaravel meldet, dass kein Primärschlüssel vorhanden ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Laravel-Array zu JSONNächster Artikel:Laravel-Array zu JSON