【问题标题】:How to select words start with a number in Laravel eloquent ORM?如何在 Laravel eloquent ORM 中选择以数字开头的单词?
【发布时间】:2016-11-02 00:39:40
【问题描述】:

我有这个 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();

这段代码有什么错误?它总是返回一个空数组[]

【问题讨论】:

    标签: php mysql sql laravel eloquent


    【解决方案1】:

    要在 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

    【讨论】:

    • 我做到了。但是有一个错误...请您检查一下。
    • 类型错误:传递给 Illuminate\Database\Query\Builder::whereRaw() 的参数 2 必须是数组类型,给定字符串,调用
    • @chanu1993 我已经编辑了答案,现在请检查。
    • 这不是真的,according to the documentation:“第二个参数 [where 方法] 是一个运算符,可以是数据库支持的任何运算符。 "
    • @miken32 我提供了另一个链接,如果条件不起作用,您可以使用与 where 语法不同的 whereraw。请检查一下。
    【解决方案2】:

    在您的原始 MySQL 查询中,您不是在数据列中查找引号;在你的 Laravel 中,你就是。尝试删除它们。

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

    【讨论】:

      猜你喜欢
      • 2015-02-07
      • 1970-01-01
      • 2022-01-01
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 2023-02-21
      • 2020-01-12
      • 2015-03-23
      相关资源
      最近更新 更多