2016-06-30 2 views
5

Ich habe diese MYSQL-Abfrage. Ich möchte alle Wörter beginnend mit einer Zahl auswählen. Dies ist die reine MYSQL-Abfrage.Wie wähle Wörter beginnen mit einer Zahl in Laravel eloquenten ORM?

SELECT 'seriesid', 'seriesname', 'imagepath', 'views', 'scenes' 
    FROM `series` 
    WHERE `seriesname` regexp '^[0-9]+' 

Jetzt möchte ich dies mit Laravel implementieren. Ich habe ein paar Codes gemacht. Aber nicht funktioniert. Hier ist mein Laravel-Code für die obige Abfrage.

DB::table('series')-> 
    select('seriesid', 'seriesname', 'imagepath', 'views', 'scenes')-> 
    where('seriesname', 'regexp', '\'^[0-9]+\'')-> 
    get(); 

Was ist der Fehler in diesem Code? Es gibt immer ein leeres Array [] zurück.

Antwort

5

verwenden In Ihre ursprüngliche MySQL-Abfrage, Sie suchen nicht nach Angeboten in den Spaltendaten; in deinem Laravel bist du. Versuche sie zu entfernen.

DB::table('series')-> 
    select('seriesid', 'seriesname', 'imagepath', 'views', 'scenes')-> 
    where('seriesname', 'regexp', '^[0-9]+')-> 
    get(); 
2

Um Regex in Laravel zu verwenden, müssen Sie WhereRaw() verwenden. Also diesen Code ändern

DB::table('series')->select('seriesid', 'seriesname', 'imagepath', 'views', 'scenes')->where('seriesname', 'regexp', '\'^[0-9]+\'')->get();

TO

DB::table('series')->select('seriesid', 'seriesname', 'imagepath', 'views', 'scenes')->whereRaw('seriesname regexp ?', array('\'^[0-9]+\''))->get();

Wenn Sie nicht in der Lage sind, die Abfrage, die Sie über das Fluent Interface zum Erstellen, fühlen Sie sich frei whereRaw https://laravel.com/docs/5.0/eloquent

+0

Ich tat das. Aber es gibt einen Fehler ... Können Sie das bitte überprüfen? –

+0

Type error: Argument 2 an Illuminate \ Database \ Query \ Builder übergeben: whereRaw() muss vom Typ Array sein, String gegeben, aufgerufen –

+0

@ chanu1993 Ich habe die Antwort jetzt netterweise überprüft. –

Verwandte Themen