Laravel CRUD 搜索功能
Posted
技术标签:
【中文标题】Laravel CRUD 搜索功能【英文标题】:Laravel CRUD search function 【发布时间】:2021-12-17 17:55:38 【问题描述】:我需要您的帮助,我该如何为我的 laravel crud 系统创建搜索功能? 我想做一个搜索功能,管理员可以搜索用户名,它就像一个过滤器,搜索后只显示与搜索相同的用户。
admin.users.index(刀片文件):
<div class="col-md-4">
<form action="/search" method="GET">
<div class="input-group">
<input type="search" name="search" class="form-control">
<span class="input-group-btn">
<button type="submit" class="btn btn-primary">Keresés</button>
</span>
</div>
</form>
</div>
<div class="card">
<table class="table">
<thead>
<tr>
<th scope="col">Profilkép</th>
<th scope="col">Név</th>
<th scope="col">Email</th>
<th scope="col">Telefonszám</th>
<th scope="col">Műveletek</th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<th scope="row"><img src="/uploads/avatars/ $user->avatar " style=" width:32x; height:32px; float:left; border-radius:50%; margin-right:25px;"></th>
<td> $user->name </td>
<td> $user->email </td>
<td> $user->phone </td>
<td>
<a class="btn btn-sm btn-primary" href=" route('admin.users.edit', $user->id) " role="button">Szerkesztés</a>
<button type="button" class="btn btn-sm btn-danger" onclick="event.preventDefault(); document.getElementById('delete-user-form- $user->id ').submit()">
Törlés
</button>
<form id="delete-user-form- $user->id " action=" route('admin.users.destroy', $user->id) " method="POST" style="display: none;">
@csrf
@method("DELETE")
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
$users->links()
</div>
UserController 搜索功能:
public function index(Request $request)
if(Gate::denies('logged-in'))
dd('no acces');
if(Gate::allows('is-admin'))
return view('admin.users.index', ['users' => User::paginate(10)]);
dd("adminnak kell lenned");
$users = User::paginate(10);
return view('admin.users.index')
->with([
'users' => $users
]);
public function search(Request $request)
$search = $request->get('search');
$users = User::table('users')->where('name', 'like', '%'.$search.'%')->paginate(10);
return view('admin', ['users' => $users]);
我在 web.php 中没有路由,因为我不知道如何解决这个问题。 :( 请帮我! 谢谢你的回复!
【问题讨论】:
添加路线:阅读文档,很简单。但你不需要。您可以使用带有查询参数“搜索”的索引操作 你能帮我在代码中实现这个吗? 我不会为您编写代码,但会帮助您入门:将表单操作更改为索引路由,使用$request->query('search')
读取查询参数。现在您只需使用 where like 语句(在您的索引操作中)在查询参数上创建一个 if 语句
【参考方案1】:
$('.table').DataTable(
"paging": true,
"pageLength": 10,
"scrollY": 850,
"scrollX": true,
"columnDefs": [
"targets": -1,
"orderable": false,
,
],
"ordering": false,
);
将此命令放入 javascript。
添加这个css
https://cdn.datatables.net/1.11.3/css/jquery.dataTables.min.css
添加这个js
https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js
这是没有任何内容的数据表搜索。如果你想使用这个方法。
【讨论】:
那不是问题。问题是关于使用控制器而不是客户端进行搜索。旁注,当你有一个大数据集时,DataTables 会失败。 那你需要发送请求并触发你的表 我知道,但真正的问题是,为什么要导入 jQuery 和 DataTables,来替换 1 个简单的 where 语句?除此之外,大多数开发人员正在远离 jQuery,因为 vanilla JS 基本上可以做到这一点。这对于问题中所需的功能来说太过分了。以上是关于Laravel CRUD 搜索功能的主要内容,如果未能解决你的问题,请参考以下文章