【问题标题】:Laravel binding replace question mark from variableLaravel 绑定替换变量中的问号
【发布时间】:2017-03-10 07:04:39
【问题描述】:

我有这样的面积表:

-----------------------------
id | name        | level
-----------------------------
1  | India       | country
2  | Some?thing  | country

在此表中,我添加了带有 问号 的行,我想按如下方式选择该行 用雄辩的方式查询:

Area::select(*)->where("name","LIKE", "%Some?thing%")
               ->where("level","=","country")->get();

但这并没有给出结果,因为字符串中的问号在 where 条件被绑定替换

生成的原始 sql 是:

select * from area where name like %Somecountrything% AND level = ?

但我想要它喜欢

select * from area where name like %Some?thing% AND level = country

【问题讨论】:

  • 试试这样的whereRaw("name LIKE %Some?thing%")
  • 我试过了,但是没有用。
  • 真的不知道能不能用,不过尽量用斜杠转义问号。 \?
  • @Arjun:在我的评论中检查我的答案我忘记给出单引号,并且我已经测试了我的答案它正在生成正确的输出。

标签: php laravel laravel-5 laravel-eloquent


【解决方案1】:

试试这个:

Area::whereRaw("name LIKE '%Some?thing%'")
               ->where("level","=","country")->get();

您可以在 whereRaw() 的帮助下向 laravel 注入原始 mysql 查询

【讨论】:

    【解决方案2】:

    为此使用whereRaw()

    喜欢

    DB::table('users')->whereRaw("email LIKE '%Some?thing%'")->get();
    Print_r(DB::getQueryLog());
    

    输出如下:

    select * from `abc_users` where email LIKE '%Some?thing%'
    

    希望这会有所帮助!

    【讨论】:

    • 谢谢!但是当我为此添加另一个 where 条件时,这会产生问题。
    • 什么问题?你可以添加多个where()
    【解决方案3】:

    试试……

    Area::select('*') ....
    

    完整代码:

    Client::select('*')->where("name","LIKE", "%xyz?xyz%")
                   ->where("city","=","331")->get();
    

    输出:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 2016-09-14
      相关资源
      最近更新 更多