Laravel 搜索列以给定单词开头
Posted
技术标签:
【中文标题】Laravel 搜索列以给定单词开头【英文标题】:Laravel search column starts with the given word 【发布时间】:2016-07-14 15:06:43 【问题描述】:我在使用 Laravel where 和 like 搜索查询时遇到问题。
$words = 'pa';
$query = Category::where(function ($query) use ($words)
$query->where('name', 'like', '%'.$words)
->orWhere('name', 'like', $words . '%')
)->pluck('name');
结果是:
[Chocolate Spa, Zen Spa, Disco Party]
预期的结果只有Party
。
我希望它的搜索名称列以给定单词开头,但不包含该单词。
我怎样才能实现这种搜索方法?
【问题讨论】:
只需删除where()
方法,它就会留下:$query->where('name', 'like', $words . '%')
@iam-decoder 我试过你的方法。它让我空虚。
不可能,该查询会产生类似SELECT name FROM tablename WHERE name LIKE 'pa%'
的结果,这是一个正确的查询
@iam-decoder 可以吗,因为有 '->pluck('name')
,你能做到->toSql()
并在此处粘贴输出吗?
【参考方案1】:
这应该可行:
$query = Category::where('name', 'like', $words.'%')
->orWhere('name', 'like', '% '.$words.'%'))
->pluck('name');
【讨论】:
不需要ucfirst()
默认情况下mysql会以不区分大小写的方式进行搜索
没有必要,但请随心所欲:P以上是关于Laravel 搜索列以给定单词开头的主要内容,如果未能解决你的问题,请参考以下文章