首页 > 编程 > PHP > 正文

LaravelEloquentORM一种高级用法

2020-03-22 17:25:36
字体:
来源:转载
供稿:网友
  • 一、需求:
    	在数据搜索时最常见的就是调用同一个方法查询,而查询的字段却可能是其中一个或其中的几个字段一起组合查询,例如:对列表的搜索,基本上都是几个字段随意组合搜索。那么在model里就需要判断有那个字段组合,怎么组合。
    网上找了很久,Laravel群里也问了几个,都说没有写过,于是自己写个吧。话不多说,见代码:
    function findByParam($param = array())  {    $select = new Customer();    if (isset($param['name']) && '' != $param['name'])    {      $select = $select->where('customer.name', '=', $param['name']);    }    if (isset($param['phone']) && '' != $param['phone'])    {      $select = $select->where('customer.phone', '=', $param['phone']);    }    if (isset($param['email']) && '' != $param['email'])    {      $select = $select->where('customer.email', '=', $param['email']);    }    if (isset($param['tel']) && '' != $param['tel'])    {      $select = $select->where('customer.tel', '=', $param['tel']);    }    if (isset($param['qq']) && '' != $param['qq'])    {      $select = $select->where('customer.qq', '=', $param['qq']);    }    if (isset($param['IDCard']) && '' != $param['IDCard'])    {      $select = $select->where('customer.IDCard', '=', $param['IDCard']);    }    // 执行分页查询    $customers = $select->leftJoin("member", function ($join)    {      $join->on("customer.memberID", "=", "member.id");    })      ->get(array(      'customer.id',      'customer.name',      'customer.sex',      'customer.tel',      'customer.phone',      'customer.address',      'customer.email',      'customer.qq',      'customer.headPic',      'customer.birthday',      'customer.IDCard',      'customer.enable',      'customer.memberID',      'customer.IDCard',      'customer.info',      'member.name as mname',      'member.discount'    ));    return json_encode($customers);
    调用的时候,controller里只需要接收这些字段,无论它是否有值,直接加入到$param数组中查询就OK,例如:
    function anyFindbyparam()  {    $name = Input::get('name');    $tel = Input::get('tel');    $phone = Input::get('phone');    $email = Input::get('email');    $qq = Input::get('qq');    $IDCard = Input::get('IDCard');    $customer = new Customer();    $customers = $customer->findByParam(array(      'name' => $name,      'tel' => $tel,      'phone' => $phone,      'email' => $email,      'qq' => $qq,      'IDCard' => $IDCard    ));    return $customers;  }
    出处:http://blog.csdn.net/a437629292/article/details/44038411PHP编程

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表