【问题标题】:How to create api for search in lumen/laravel?如何在 lumen/laravel 中创建用于搜索的 api?
【发布时间】:2017-06-29 05:46:19
【问题描述】:

如何在 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);

}

【问题讨论】:

  • 你试过 Laravel Scout 吗?

标签: laravel lumen


【解决方案1】:

你应该改变这一行:

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

我还认为你应该在模型查询中进行分页,而不是在返回的结果上。

【讨论】:

    【解决方案2】:

    你也可以这样做 在您的模型中创建的范围内定义您的逻辑并在您的控制器中使用它。这就是我的意思

    这应该在你的模型中

    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;
    }
    

    在你的控制器中有类似的东西

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

    您可以通过阅读 laravel doc 上的范围和这篇博文 here 获得更多信息

    【讨论】:

      猜你喜欢
      • 2020-08-12
      • 1970-01-01
      • 2016-08-06
      • 2012-02-07
      • 2020-05-13
      • 2017-04-15
      • 2017-10-07
      • 1970-01-01
      • 2016-05-22
      相关资源
      最近更新 更多