简体   繁体   English

如何在流明/ Laravel中创建用于搜索的API?

[英]How to create api for search in lumen/laravel?

How to create api for search in lumen/laravel .. I tried using keyword but not working. 如何创建用于在lumen / laravel中搜索的api ..我尝试使用关键字但不起作用。

public function index(){

    $Employees  = Employees::all();
    $page = Input::get('page', 1); 

    $keyword = Input::get('keyword', '');

    if ($keyword!='') {
         $keyword = Employees::
                where("firstname", "LIKE","%$keyword%")
                ->orWhere("lastname", "LIKE", "%$keyword%");           
        }


    $itemPerPage=5;

    $count  = Employees::count();

    $offSet = ($page * $itemPerPage) - $itemPerPage;

    $itemsForCurrentPage = array_slice($Employees->toArray(), $offSet, $itemPerPage);

   return new LengthAwarePaginator($itemsForCurrentPage, count($Employees), $itemPerPage, $page,$keyword);

}

You should change this line : 您应该更改此行:

if ($keyword!='') {
     $Employees  = Employees::
            where("firstname", "LIKE","%$keyword%")
            ->orWhere("lastname", "LIKE", "%$keyword%")
            ->get();           
}

Also i think You should the pagination within the model query, not on the returned result. 我也认为您应该在模型查询中进行分页,而不是对返回结果进行分页。

you can also do this define your logic in a scope created in you model and consume it in your controller.here is what i mean 您也可以在模型中创建的范围内定义逻辑并在控制器中使用它。这就是我的意思。

This should be in your model 这应该在您的模型中

public function scopeFilter($query, $params)
{

    if ( isset($params['name']) && trim($params['name'] !== '') ) 
    {
        $query->where('name', 'LIKE', trim($params['name']) . '%');
    }

   if ( isset($params['state']) && trim($params['state'] !== '') ) 
    {
        $query->where('state', 'LIKE', trim($params['state']) . '%');
    }

    return $query;
}

and in your controller have something like 并且在您的控制器中有类似

public function filter_property(Request $request)
{
    $params = $request->except('_token');
    $product = Product::filter($params)->get();
    return response($product);
}

you can get more by reading scope on laravel doc and this blog post here 您可以通过阅读laravel DOC范围,这篇博客文章获得更多点击这里

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM