📜  laravel 使用分页搜索和返回记录 - PHP (1)

📅  最后修改于: 2023-12-03 15:02:36.228000             🧑  作者: Mango

Laravel 使用分页搜索和返回记录 - PHP

在网站或应用程序中,通常会有大量的记录需要展示给用户。为了方便用户浏览和管理这些记录,我们经常需要实现分页和搜索功能。Laravel是一个流行的PHP框架,提供了丰富的工具和函数来实现这些功能。在本文中,将介绍如何使用Laravel实现分页搜索和返回记录。

分页
1. 调用paginate函数

Laravel提供了一个paginate函数,可以用其实现分页功能。例如,如果要在视图中展示users表的前10条记录,可以这样写:

$users = DB::table('users')->paginate(10);

Notice: 上面这个代码片段的前后必须加上markdown代码块标记```

此时$users是一个Illuminate\Pagination\LengthAwarePaginator对象,包含了该表的前10条记录。在视图中,可以使用以下代码输出分页链接和记录列表:

@foreach ($users as $user)
    {{ $user->name }}
@endforeach

{{ $users->links() }}

Notice: 上面这个代码片段的前后必须加上markdown代码块标记```

其中links函数用于输出分页链接,可以在视图中自定义其样式。

2. 修改分页样式

Laravel的默认分页样式非常简单,不够美观。如果要修改分页样式,可以使用Laravel提供的pagination方法。例如,要修改分页样式为Bootstrap样式,可以在AppServiceProvider中注册pagination函数:

use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Route;
use Illuminate\Pagination\Paginator;

public function boot()
{
    Schema::defaultStringLength(191);
    Route::resourceVerbs([
        'create' => 'crear',
        'edit' => 'editar',
    ]);

    Paginator::useBootstrap();
}

Notice: 上面这个代码片段的前后必须加上markdown代码块标记```

Paginator::useBootstrap()方法会告诉Laravel使用Bootstrap样式渲染分页链接。此时,在视图中调用links函数即可看到新的分页样式了。

搜索
1. 在控制器中实现搜索

要使用Laravel实现搜索功能,通常需要在控制器中编写搜索逻辑。例如,现在要实现一个根据用户输入搜索名字的功能,可以在控制器中编写如下代码:

public function search(Request $request)
{
    $searchTerm = $request->input('name');
    $users = User::where('name', 'LIKE', "%$searchTerm%")->paginate(10);
    return view('user_search', compact('users'));
}

Notice: 上面这个代码片段的前后必须加上markdown代码块标记```

其中,User是一个模型类,代表users表。search函数接收一个Request对象作为参数,从中读取用户输入的搜索关键字name。然后通过where函数查询符合条件的记录,并使用paginate函数实现分页功能。最后返回视图user_search,该视图中展示了搜索结果。

2. 在视图中实现搜索表单

在控制器中实现了搜索逻辑,还需要在视图中提供搜索表单。例如,要实现一个名为user_search的搜索表单,可以使用如下代码:

<form action="/search" method="GET">
    <input type="text" name="name">
    <input type="submit" value="Search">
</form>

@foreach ($users as $user)
    {{ $user->name }}
@endforeach

{{ $users->links() }}

Notice: 上面这个代码片段的前后必须加上markdown代码块标记```

其中,form标签的action属性指向控制器的search函数,method属性为GET。当用户提交搜索表单时,控制器会接收到该请求,并根据查询条件返回符合条件的记录。

以上是如何使用Laravel实现分页搜索和返回记录的介绍,希望对你有帮助!