【问题标题】:Laravel Like Query IssueLaravel Like 查询问题
【发布时间】:2015-06-02 06:07:57
【问题描述】:
$a = table::select('name')->where('name', 'LIKE', '%'.$term.'%')->get();

$term 保存用户输入的值。我的问题是,like 不起作用,它会返回表中的所有结果,而不管单词“$term”如何。

如果我进行这样的查询 -

$a = table::select('name')->where('name', 'LIKE', '%abc%')->get();

这工作正常,但每次我传递 Php 变量时,它都无法按预期工作。任何人都可以对此有所启发。

编辑 --

我发现了问题。我的 $term 没有得到价值。这么愚蠢的问题。 谢谢每一位回复的人。

【问题讨论】:

  • 查询没问题。奇怪的是它不起作用?
  • 你确定你在$term中获得了价值
  • 请查看$term 值。要么是null,要么是white space,或者可能是special character like slashes等。
  • 请关闭您的问题。
  • 感谢您的意见,我的 $term 是问题所在。我没有足够的权限来关闭问题。

标签: php laravel-4 eloquent


【解决方案1】:

不知道是什么问题,看起来不错,你也可以使用sprintf函数,如下所示

 $a = table::select('name')->where('name', 'LIKE', sprintf("%%%s%%",$term))->get();

 // OR

 $a = table::select('name')->where('name', 'LIKE', "%$term%")->get();

【讨论】:

  • 这也会返回所有结果。即使我不明白什么是错的。当我传递一个字符串时,它肯定会给出预期的结果。
  • $term 是否为空?我猜$term 是问题
  • 是的。这就是问题所在。谢谢你让我更正。
  • 很高兴知道您找到了解决方案
【解决方案2】:

因为查询看起来正确。 这可能是它的工作。

$a = table::select('name')->where('name', 'LIKE', "%.$term.%")->get();

【讨论】:

  • 检查你是否得到了 echo 要求的 $term 价值
【解决方案3】:

即使你的 sql 查询没有任何问题 我建议你检查$term的值

你也可以试试这个:

$a = table::select("name")->where("name", "LIKE", "% $term %")->get();

$a = table::select("name")->where("name", "LIKE", "% {$term} %")->get();

【讨论】:

  • 同样的结果。还返回所有结果,与术语无关。 :(
  • $term 是问题所在。我已经更正了,谢谢你的回复,
  • 没问题..继续编码:)
猜你喜欢
  • 1970-01-01
  • 2020-07-04
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-22
  • 2015-02-04
相关资源
最近更新 更多