【问题标题】:WhereRaw Laravel with variable带有变量的 WhereRaw Laravel
【发布时间】:2019-03-28 04:43:37
【问题描述】:

我正在尝试执行此查询,但出现错误(格式错误的 UTF-8 字符,可能编码不正确):

DB::table('my_table')->select(DB::raw("id"))
    ->whereRaw('UPPER(name)','=', $upper_name)
    ->pluck('id')->first();

我正在尝试将UPPER sql 函数添加到查询中。使用直接sql,查询应该是:

select * from my_table
where UPPER(name) = 'HELLO'

$upper_name = 你好。

【问题讨论】:

    标签: laravel postgresql query-builder


    【解决方案1】:

    最简单的方法。希望能帮到你

    DB::table('my_table')->select('id')
        ->where(DB::raw("UCASE(name)"), $upper_name) 
        ->first();
    

    UCASE - 将文本转换为大写

    【讨论】:

    • 谢谢,好多了。我在 PostgreSQL 中,但是使用 DB:raw 更好。
    【解决方案2】:

    呸……我明白了:

    DB::table('my_table')->select(DB::raw("id"))
        ->whereRaw('UPPER(name) = ?', $upper_name)
        ->pluck('id')->first();
    

    【讨论】:

    • 是的,whereRaw 您可以在字符串上执行整个语句,也可以像 ->whereRaw('UPPER(name) = ?', $upper_name)->whereRaw("UPPER(name) = $upper_name") 那样绑定它
    猜你喜欢
    • 2019-09-01
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 2016-03-05
    相关资源
    最近更新 更多