2016-06-30 44 views
5

Ho questa query MYSQL. Voglio selezionare tutte le parole che iniziano con un numero. Questa è la pura query MYSQL funzionante.Come selezionare le parole iniziano con un numero in Laravel eloquente ORM?

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

Ora voglio implementarlo utilizzando Laravel. Ho fatto dei codici. Ma non funziona. Ecco il mio codice Laravel per la query precedente.

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

Qual è l'errore nel codice? Restituisce sempre un array vuoto [].

risposta

5

In la tua query MySQL originale, non stai cercando citazioni nei dati della colonna; nel tuo Laravel, lo sei. Prova a rimuoverli.

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

Per utilizzare regex in laravel è necessario utilizzare whereRaw(). Quindi modificare questo codice

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

PER

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

Se non si riesce a generare la query è necessario tramite l'interfaccia fluente, sentitevi liberi di utilizzare whereRaw https://laravel.com/docs/5.0/eloquent

+0

L'ho fatto. Ma c'è un errore ... Puoi controllare questo per favore. –

+0

Errore di tipo: l'argomento 2 passato a Illuminate \ Database \ Query \ Builder :: whereRaw() deve essere del tipo array, stringa data, chiamato in –

+0

@ chanu1993 Ho modificato la risposta gentilmente controllo ora. –