这个问题听上去很简单,但我还是很难回答。所以我的意思是,假设我有一个包含 title
以及 description
我将使用
return Model::where('title','LIKE','%'.$search.'%')
->OrWhere('description','LIKE','%'.$search.'%')->get();
现在我想知道的是如何从 description
而不是 title
就像我搜索一个术语mydescription,它存在于description而不是title中,并且雄辩地返回我的模型。
但是我怎么知道雄辩结果返回的结果是描述的一部分而不是标题呢?
旁注:我知道我可以通过regex雄辩地对返回的描述进行字符串搜索,但在我的例子中,这并不是高效的性能。因为(a)我的描述很大。这是一个长文本字段(b)一旦我在我的模型上搜索了一下,然后我发现通过搜索字符串来重复一遍有点不容易。
3条答案
按热度按时间56lgkhnf1#
要在单个查询中执行此操作,必须向查询结果中添加一个新列,以指示在何处找到搜索结果。
这可以通过使用sql case来实现。以下是一般示例:
这将在结果中添加一个名为“foundin”的新列,指示在何处找到搜索结果。
示例:
结果:
toiithl62#
您可以执行两个查询而不是一个查询:
pgpifvop3#
也许您需要将$search变量与从elokent获得的title和description属性进行比较?
我不确定这是不是最好的解决办法。