Wie werden Laravel Eloquent ORM-Abfragebereiche beim Verketten in Klammern eingeschlossen?

7

In Eloquent möchte ich diese Abfrage generieren:

%Vor%

Aber ich scheine stattdessen diese Abfrage zu generieren:

%Vor%

Hier ist meine Implementierung und Code:

%Vor%

Model enthält:

%Vor%

Danke für jede Hilfe. Ich habe die Dokumente einschließlich Advanced Wheres vergeblich durchsucht.

    
crowsfan85 03.01.2014, 23:32
quelle

4 Antworten

1

Hast du whereRaw () getestet?

also sollte Ihre Funktion wie folgt aussehen:

%Vor%

ps. Das ist ungetestet.

    
rayrule 03.01.2014, 23:45
quelle
11

Sie können Klammern erzeugen, indem Sie eine Callback-Funktion an where() übergeben.

%Vor%     
Martins Balodis 07.10.2015 06:52
quelle
8

SEE EDIT FÜR ENDGÜLTIGE ANTWORT

Besser als roh, verwenden Sie oder Wo mit einer Schließung:

%Vor%

Die wirklich unglückliche Sache (und die Art und Weise, wie ich in diesem Beitrag gelandet bin) ist, dass die zweite $ Abfrage in der Schließung eine Instanz von \ Illuminate \ Database \ Query \ Builder ist und nicht \ Illuminate \ Database \ Eloquent \ Builder - Dies bedeutet, dass Sie die Modellbereiche nicht innerhalb dieser Closure verwenden können, da Query \ Builder-Instanzen keinen Bezug zu einem Modell haben.

Das heißt, ich denke immer noch, das ist viel mehr ORM-ähnlich und nützlich als Entwickler.

BEARBEITEN

Es hat eine Weile gedauert, das herauszufinden, aber das wird funktionieren, wenn Sie auch Ihre Bereiche verwenden wollen:

%Vor%

Ich erstelle tatsächlich einen vierten Bereich in meinem Code, der all dies umfasst, daher funktioniert $this möglicherweise nicht in diesem Kontext. Ich finde jedoch, dass das Scoping für meine Modelle einer der wichtigsten Bestandteile des Aufbaus ist ein gutes System.

Dies sollte definitiv in Eloquent eingebaut werden - der Motor hat einen guten Start, aber so viele Funktionen fehlen.

    
Tim 19.02.2014 08:37
quelle
4

Ich bin ein wenig zu spät zur Party, aber wäre es nicht der logischste Weg, das wo in einem Closure einzupacken?

%Vor%     
S16 17.12.2015 18:49
quelle

Tags und Links