Fügen Sie der Eloquent Collection standardmäßig eine Zeile basierend auf der Rohabfrage hinzu

StackOverflow https://stackoverflow.com//questions/25010933

  •  20-12-2019
  •  | 
  •  

Frage

In meinen Eloquent-Sammlungen möchte ich eine zusätzliche Spalte mit dem Namen „editierbar“ hinzufügen.„Bearbeitbar“ sollte in jeder Abfrage enthalten sein, die ich bei einigen Modellen ausführe.„Bearbeitbar“ zeigt basierend auf einer Rohabfrage entweder „wahr“ oder „falsch“ an.

Ich habe also eine Abfrage, die in jeder Abfrage meiner Modelle ausgeführt werden sollte.Ich füge meiner Sammlung eine zusätzliche Spalte hinzu.Der Wert von „editierbar“ wird durch eine Rohabfrage bestimmt.

Wie geht das am besten?

War es hilfreich?

Lösung

Sie könnten eine hinzufügen addSelect() -Methode zu Ihrer Abfragekette hinzufügen, um das benutzerdefinierte Attribut einzuschließen.

Etwas wie

$results = YourModelClass::select("*")
    ->addSelect(DB::raw("IF(condition,1,0) AS editable"))
    ->get();

Im oben genannten Fall würden Sie ersetzen condition mit Ihrer relevanten SQL-Anweisung, die im Rahmen der Abfrage pro Zeile ausgewertet wird.Wenn die Aussage wahr ist, dann editable = 1 und wenn falsch, dann editable = 0 für jede Zeile, die an Ihre Sammlung zurückgegeben wird.

BEARBEITEN:Ich habe gerade gesehen, dass du das haben willst jeden Abfrage, daher benötigen Sie wahrscheinlich einen globalen Bereich/ein globales Merkmal für Ihre Modelle, aber die oben beschriebene Technik zum Einschließen des zusätzlichen Attributs sollte die richtige sein.

Ich werde die Dokumentation zum Hinzufügen globaler Bereiche nicht kopieren/einfügen, sie befindet sich in den Kerndokumenten von Laravel und ich bin sicher, dass Sie sie finden können.

Andere Tipps

Sie können Ihrem Modell einen benutzerdefinierten Getter hinzufügen:

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top