Heim >Backend-Entwicklung >PHP-Tutorial >Wie überprüfe ich, ob in Laravel ein verwandtes Modell vorhanden ist?
Überprüfen der Existenz verwandter Modelle in Laravel
In Laravel stellen Eloquent-Modelle Datenbankentitäten dar und bieten praktische Methoden zum Verwalten von Beziehungen zwischen diesen Entitäten. Bei der Arbeit mit Beziehungen kann es jedoch erforderlich sein, zu prüfen, ob ein zugehöriges Modell vorhanden ist, bevor weitere Vorgänge ausgeführt werden.
Beachten Sie den folgenden Code:
<code class="php">public function option() { return $this->hasOne('RepairOption', 'repair_item_id'); } public function setOptionArrayAttribute($values) { $this->option->update($values); }</code>
In diesem Szenario haben wir ein Modell, das eine Eins-zu-eins-Beziehung zu einem anderen Modell hat. Beim Erstellen oder Aktualisieren dieses Modells müssen wir feststellen, ob das zugehörige Modell vorhanden ist, um zu entscheiden, ob wir es aktualisieren oder erstellen möchten.
Lösung 1 (Laravel 7.2):
In Laravel 7.2 und höher können Sie die Methode „exists()“ für das Beziehungsobjekt verwenden, um zu überprüfen, ob das zugehörige Modell existiert:
<code class="php">$model = RepairItem::find($id); if (Input::has('option')) { if ($model->option()->exists()) { // Option exists, update it } else { // Option does not exist, create it } }</code>
Lösung 2 (vor Laravel 7.2):
In Laravel-Versionen vor 7.2 können Sie die count()-Methode für das Beziehungsobjekt verwenden, um zu überprüfen, ob das zugehörige Modell vorhanden ist:
<code class="php">if (count($model->option)) { // Option exists } else { // Option does not exist }</code>
Hinweis: Diese Methode funktioniert nur, wenn es sich bei der Relation um eine Einwertrelation handelt (z. B. hasOne, gehörtZu). Für Viele-zu-Viele-Beziehungen oder andere sammlungsbasierte Beziehungen können Sie Methoden wie count() oder isNotEmpty() für die Sammlung der Beziehung verwenden, um zu überprüfen, ob sie verwandte Modelle enthält.
Das obige ist der detaillierte Inhalt vonWie überprüfe ich, ob in Laravel ein verwandtes Modell vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!