2016-06-30 4 views
5

У меня есть этот запрос MYSQL. Я хочу выбрать все слова, начинающиеся с числа. Это рабочий чистый запрос MYSQL.Как выбрать слова начинаются с числа в Laravel красноречивой ORM?

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

Теперь я хочу реализовать это, используя Laravel. Я сделал несколько кодов. Но не работает. Вот мой код Laravel для вышеуказанного запроса.

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

Какая ошибка в коде? Он всегда возвращает пустой массив [].

ответ

5

В ваш исходный запрос MySQL, вы не ищете кавычки в данных столбца; в вашем Laravel, вы. Попробуйте удалить их.

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

Чтобы использовать регулярное выражение в laravel, вы должны использовать whereRaw(). Таким образом изменить этот код

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

К

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

Если вы не в состоянии генерировать запрос, нужно через беглом интерфейс, не стесняйтесь использовать whereRaw https://laravel.com/docs/5.0/eloquent

+0

Я сделал это. Но есть ошибка ... Можете ли вы проверить это, пожалуйста. –

+0

Ошибка типа: Аргумент 2 передан в Illuminate \ Database \ Query \ Builder :: whereRaw() должен быть из массива типа, заданной строки, вызванной в –

+0

@ chanu1993 Я сейчас отредактировал ответ. –