У меня есть этот запрос MYSQL. Я хочу выбрать все слова, начинающиеся с числа. Это рабочий чистый запрос MYSQL.
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();
Какая ошибка в коде? Он всегда возвращает пустой массив []
.
В исходном запросе MySQL вы не ищете кавычки в данных столбца; в вашем Laravel, вы. Попробуйте удалить их.
DB::table('series')-> select('seriesid', 'seriesname', 'imagepath', 'views', 'scenes')-> where('seriesname', 'regexp', '^[0-9]+')-> get();
Чтобы использовать регулярное выражение в 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