Laravel eloquent UUID in einer pivot-Tabelle

Diese Frage ist wie diese: laravel uuid nicht zeigt in Abfrage. Allerdings ist der Unterschied in dieser Frage ist, dass die Tabelle ist eine pivot-Tabelle mit id Feld UUID generiert über MySQL-trigger auf insert.

Möchte ich nicht erstellen Sie ein anderes Modell für die pivot-Tabelle stellen Sie es mit der Lösung angesehen, die auf die ähnliche Frage zu beantworten. Also, gibt es eine Möglichkeit, führen Sie die Typumwandlung der pivot-Tabelle aus einem anderen Modell im Zusammenhang mit ihm?

InformationsquelleAutor SaidbakR | 2017-04-05



One Reply
  1. 2

    Ich denke, das könnte sein, was Sie wollen:

    In Ihrem Modell definiert die BelongsToMany Beziehung hinzufügen dieser Eigenschaft:

    protected $casts = ['relationName.pivot.id' => 'string'];

    Update

    Ich denke, wir können machen verwenden von anonymen Klassen in php7.0 hier statt der Erstellung einer model-Klasse für die pivot:

    ich nicht diesen code testen, damit ich weiß nicht, ob es funktionieren wird oder nicht, dies ist nur eine Idee

    public function activeStatuses()
    {
        return $this->belongsToMany('ModelName')
                    ->using(class_basename(new class extends \Illuminate\Database\Eloquent\Relations\Pivot {
                        protected $casts = ['id' => 'string'];
                    }));
    }

    Generell würde ich lieber erstellen Sie ein Modell für die pivot-Tabelle oder benutzen Sie einfach eine pivot-Klasse

    • Ich habe versucht protected $casts = ['activeStatuses.pivot.id' => 'string']; aber es funktioniert nicht.
    • Danke, erweitertes Modell mit benutzerdefinierten string $primaryKey und $casts = ['customPrimaryField' => 'string'] funktioniert einwandfrei.
    • Derzeit habe ich es benutzt, aber ich bekam eine Fehlermeldung über fehlende Parameter für die Pivot-Konstrukt Methode Type error: Too few arguments to function Illuminate\Database\Eloquent\Relations\Pivot::__construct(), 0 passed

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.