Laravel Eloquent firstOrFail gibt alle Datensätze in der Tabelle

Ich versuche zum abrufen einer Zeile in meiner eloquenten Modell. Was ich will zu tun ist, suchen Sie zuerst, um zu sehen, wenn es vorhanden ist, oder eine Ausnahme werfen. In der Laravel docs, heißt es, die ich nutzen kann firstOrFail oder findOrFail. Der beredte Abfrage ist wie folgt:

Game::where('game', 'game-name')->firstOrFail()->remember(60)->get()

Dies funktioniert für die Ermittlung des Datensatzes und eine Ausnahme werfen, wenn nicht gefunden, gibt aber alle Zeilen als Ergebnis. Was ich tun möchte, ist nur wieder die Zeile, die ich gesucht habe. Ich bin nicht die Indizierung durch primär-Schlüssel in diesem Beispiel, so findOrFail nicht funktioniert.

Wenn ich ersetzen ->get() mit ->first() alle es tut, ist die Rückkehr der ersten Zeile in der Tabelle. Es ignoriert die ::where().

EDIT:, Wenn ich entfernt ->get() und ->remember() es wieder in die gewünschte Zeile, jedoch möchte ich noch mal cache die Abfrage aber wenn ich ->remember() und print_r auf das Ergebnis, die gesamte eloquent Modell ausgegeben wird.

EDIT2: Alle behoben ist. Ich habe immer verwechseln den Ort der ->remember(). Der richtige Weg, dies zu tun ist:

Game::where('game', 'game-name')->remember(60)->firstOrFail()

Es ist nicht, denken Sie daran, es ist first firstOrFail get find etc, die Sie haben zu kümmern. Alle von Ihnen führen Sie die Abfrage und zurück collection/model/null (oder array), so dass Sie in der Tat führen Sie die Abfrage, die Sie wollte, dann rief remember und lief eine weitere Abfrage mit get.

InformationsquelleAutor davidxd33 | 2014-08-22

Schreibe einen Kommentar