老莫的笔记本  
  
查看: 958|回复: 0

Laravel 多条件、模糊搜索 + 分页

[复制链接]

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
发表于 2019-7-4 15:58:57 | 显示全部楼层 |阅读模式
首先,确认前提,由于我的数据表是生成的,所以  只能用DB门面,无模型类使用 :
  1.     /*
  2.         获取商标数据
  3.     */
  4.     public function shops( Request $req )
  5.     {
  6.         // 页码
  7.         $page = Input::get('page');

  8.         // 条数
  9.         $limit = Input::get('limit');

  10.         $key = input::post('key') ;

  11.         $map = array();

  12.         // 关键词
  13.         if(!empty(input::post('key')))
  14.         {

  15.             $map = function($query) use($key){
  16.                 $query->where( 'spfw', 'like', '%' . $key . '%');
  17.                 $query->orWhere( 'xtype', '=',  $key );
  18.                 $query->orWhere( 'mtype', '=',  $key );
  19.                 $query->orWhere( 'ctype', '=',  $key );
  20.             };

  21.         }

  22.         // 获取表名
  23.         $xlist = $this->getxlist();

  24.         // 分页检查
  25.         $req_data = DB::table($xlist)->where( $map )->paginate($limit);

  26.         // 统计总数
  27.         $req_conut = DB::table($xlist)->where( $map )->count();

  28.         // dd(  collect( $req_data) ->get('data') );

  29.         downjson(0,"信息获取成功",$req_conut,collect( $req_data ) ->get('data'));


  30.     }
复制代码


1. [分页] 这个 paginate 会自动获取  参数中的 page值 【无聊不,难不成自以为是方便?那干嘛不再获取一个limit】
2. [处理返回的数据 ] 返回的数据 是个  Collection 的类 , 需要经过特殊处理【 这是为了方便模板语法使用吧 】 。处理这个类 需要引入类
  1. use Illuminate\Support\Collection;
复制代码
3.我整整捣鼓了好一会 才找到这么一行数字 处理方法 collect( $req_data ) ->get('data') 说实话  我真不知道这是干嘛的。反正得到我想要的数据了。
    参考文献: https://laravelacademy.org/post/8210.html  [其实并不能找到对应的方法,不过可以了解 这个对象]

4. [模糊搜索] $map['a'] = ['like',11]; (是错的) ,TP5这套在这很明显是行不通的。 整个度娘都在说 模型类 ,最后小文给我找了一篇文章讲DB的
  参考文献 https://blog.csdn.net/sqc157400661/article/details/73850306  [两种模糊查询都有]

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表