Laravel - 获取包含特定字符串

时间:2017-07-04 16:50:49

标签: php laravel pagination

我试图获取一个查询,该查询为我提供了包含特定列中特定字符串的每条记录(无论第一个字母是大写还是小写。

例如:我传递的字符串是test

我的数据库中有30条记录。其中5个包含测试(小写),其中5个包含测试(大写)。其他20个记录没用,所以我不需要它们。

我昨天得到了一些帮助,但无法让它像我真正想要的那样,输出也是错误的。

这是代码:

$search = $request['search'];
        $usergroups = Usergroups::where('name', 'like', '%' . str_slug($search, ' ') . '%')->simplePaginate(3);

$ search是一个包含我想要搜索的字符串的变量。

如果我想搜索Test,我会回复每一条记录。无论它是否包含Test,test或unicorn bla bla。我得到了一切。

有人知道解决这个问题的方法吗?我试过写一个自定义的分页类,但这对我没用。

enter image description here

2 个答案:

答案 0 :(得分:0)

仅当您想要为记录提取链接多个where语句时才使用orWhere。

$users = \App\UserGroup::where('name', 'LIKE', '%Test%')->get();

我认为问题可能出在分页上。 我添加了这个以便为我的2条名为Test and test

的记录进行分页
$users = \App\UserGroup::where('name', 'LIKE', '%Test%')->simplePaginate(1);

如果您需要使用刀片在视图上显示结果,这可能会有所帮助:

https://laravel.com/docs/5.4/pagination#displaying-pagination-results

答案 1 :(得分:0)

我不太确定,但我认为课程有错误。如果我输出$ usergroups,我得到这个:

current_page    1
data: 
   // my data 
from    1
last_page   2
next_page_url   "http://blabla.de/test?page=2"
path    "http://blabla.de/test"
per_page    3
prev_page_url   
to  3
total   5

你可以清楚地看到共有5个项目(这是真的),并且有2个页面。这也是因为我已经将分页设置为分页(3)。

如果我输出刀片中的链接,我会得到类似的结果:

enter image description here

但如果我点击“2” - 到达最后一页,我不知道为什么,但链接会立即改为1-7。

enter image description here

所以在我想要改变分页链接之前,我得到正确的项目,但如果我改为?page = 2,我会得到表格中的所有项目。我不知道为什么,但也许这就是laravel的错误。我也用laravel 5.3(目前为5.​​4)尝试了它但是遇到了同样的问题。如果我查看phpmyadmin查询日志并手动尝试查询,我也会得到完美的输出。如果我使用 - > get()而不是 - > paginate();我也得到了正确的输出。我再也不知道了。