【问题标题】:Query only records that match specific substring - Laravel 5 [duplicate]仅查询与特定子字符串匹配的记录 - Laravel 5 [重复]
【发布时间】:2017-03-03 04:44:06
【问题描述】:

我想从我的访问者表中查询我的访问者记录,该表的 OS 子字符串为bot

如您所见,这里现在列出了 8 条记录中的 3 条。我只想抓住那三个。

我试过看in this documentation。除非我错过了,否则我并没有真正找到我想要做的事情。

$visitors = Visitor::orderBy('created_at', 'desc')
        ->where('os',substr('bot'))<----- NEED help here 
        ->get();

更新

我相信我的问题不是this proposed duplicate 的重复。

【问题讨论】:

  • 这个问题和laravel无关,这是一个纯sql的问题。重复的主题解释了如何过滤子字符串。
  • Laravel where() 通常接受 3 个这样的参数:-&gt;where('os', '____', '%bot%') 第二个参数不像你想象的那么灵活。
  • 当人们寻找这个问题的答案时,他们应该看到这个-&gt;where('os', 'like', '%bot%') 作为答案......这正是@Eddy 回答的内容。
  • 你声称这个问题之前没有在 laravel 上下文中被问过同样不正确:stackoverflow.com/questions/38631486/…
  • 不,人们需要了解他们如何查询数据库,然后他们可以将其转换为任何 ORM。如果您知道如何在 sql 中执行此查询,那么您就不必问这个问题了。

标签: php mysql sql laravel laravel-5


【解决方案1】:

你试过“喜欢”吗

$visitors = Visitor::orderBy('created_at', 'desc')
->where('os', 'like', '%bot%') //<----- Match any word containing ...bot.. at any place
->get();

使用变量

$visitors = Visitor::orderBy('created_at', 'desc')
->where('os', 'like', '%'. $bot .'%') //<----- Match the searched variable
->get();

【讨论】:

  • 哦,真的吗?我不知道 LIKE 是如何工作的……哦,好吧。我会试一试。
  • LIKE 的反义词是什么?如果我想检查否定的情况..
  • 有这样的事不喜欢吗?
  • 是的。 “不喜欢”会起作用。
猜你喜欢
  • 2019-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-17
  • 1970-01-01
  • 2011-12-06
  • 2014-07-12
相关资源
最近更新 更多