这是我参与8月更文挑战的第23天,活动详情查看:8月更文挑战
一、用户列表分页和模糊搜索api
1.1、创建用户控制器
运行命令创建资源控制器:php artisan make:controller Admin/UserController --api
UserController.php
控制器默认就会为我们创建5个方法:
1.2、创建transform
在app
文件夹下创建一个Transformers
文件夹,写入UserTransformer.php
:
<?php
namespace App\Transformers;
use App\Models\User;
use League\Fractal\TransformerAbstract;
class UserTransformer extends TransformerAbstract {
public function transform(User $user) {
return [
'id' => $user->id,
'name' => $user->name,
'email' => $user->email,
'created_at' => $user->created_at,
'updated_at' => $user->updated_at,
];
}
}
1.3、创建用户资源路由
在routes/admin.php
下创建用户资源路由:
<?php
use App\Http\Controllers\Admin\UserController;
$api = app('Dingo\Api\Routing\Router');
$api->version('v1', function ($api) {
// 路由分组
$api->group(['prefix' => 'admin'], function ($api) {
// 需要登陆的路由
$api->group(['middleware' => 'api.auth'], function ($api) {
/**
* 用户管理
*/
// 禁用用户/启用用户
$api->patch('users/{user}/lock', [UserController::class, 'lock']);
// 用户管理资源路由
$api->resource('users', UserController::class, [
'only' => ['index', 'show']
]);
});
});
});
1.4、修改用户方法(分页和模糊搜索)
UserController.php
:
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\BaseController;
use App\Models\User;
use App\Transformers\UserTransformer;
use Illuminate\Http\Request;
class UserController extends BaseController
{
/**
* 禁用用户
*/
public function lock()
{
//
}
/**
* 用户列表
*/
public function index(Request $request)
{
$name = $request -> input('name');
$email = $request -> input('email');
$users = User::when($name, function($query) use ($name) {
$query->where('name', 'like', "%$name%");
})
-> when($email, function ($query) use ($email) {
$query->where('email', $email);
})
-> paginate(2);
return $this->response()->paginator($users, new UserTransformer());
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
1.5、效果
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!