Übergeben von MySQL-Funktionen an die Eloquente ORM-Abfrage

8

Ich versuche, die folgende Abfrage in Eloquent ORM auszuführen und kann nicht scheinen, die MySQL-Funktion auszuführen -

%Vor%

Die Ausnahme, die ich bekomme, ist wie folgt - Nachricht:

%Vor%

Im Grunde kapselt es die YEAR() MySQL-Funktion als Spalte. Gibt es eine Möglichkeit, dies ohne Verwendung einer unbearbeiteten Abfrage zu tun?

    
NightMICU 10.01.2013, 20:02
quelle

4 Antworten

5

Wahrscheinlich möchten Sie die Funktion YEAR() in Ihrer WHERE-Klausel trotzdem nicht verwenden. Dies würde verhindern, dass Sie einen Index für die Spalte created_at verwenden. Ich würde vorschlagen, dass Sie stattdessen LIKE verwenden:

%Vor%

Sie können auch reine SQL-Abfragen verwenden (mit query() method), wenn Sie in Ihren Abfragen nicht unterstützte MySQL-Funktionen verwenden müssen.

    
Mike Brant 10.01.2013, 20:09
quelle
24

Um zu verhindern, dass Eloquent ORM die erste Variable mit Apostrophen umschließt, können Sie DB:raw function like:

verwenden %Vor%

Und Sie erhalten eine Abfrage:

%Vor%     
ULazdins 13.06.2013 12:36
quelle
1

Ich benutze Laravel 5.3

%Vor%

Dieser Typ hat mir geholfen & gt; & gt; Ссылка

    
Alex Benincasa 03.06.2017 03:13
quelle
1

Sie haben zwei Möglichkeiten dies zu tun und es hängt von Ihrer Laravel-Version ab

Verwenden Sie zuerst die Methode Raw , um die Funktion wie im folgenden Beispiel zu übergeben

%Vor%

Sie können es auch in (select, group, order) Methoden verwenden, um weitere Informationen zu Raw Laravel Docs beginnt von v 4.2

Zweite Verwendung whereYear Methode

%Vor%

Diese Methode beginnt ab V 5.3 für weitere Informationen. Abschnitt "Wo lesen" finden Sie alle Methoden für Daten (whereDate / whereMonth / whereDay / WhereYear)

    
vipmaa 05.09.2017 16:40
quelle

Tags und Links