Laravel Eloquent ORM 多条件查询的例子

吾爱主题 阅读:187 2021-08-29 16:16:00 评论:0

一、需求:

在数据搜索时最常见的就是调用同一个方法查询,而查询的字段却可能是其中一个或其中的几个字段一起组合查询,例如:对列表的搜索,基本上都是几个字段随意组合搜索。那么在model里就需要判断有那个字段组合,怎么组合。

网上找了很久,Laravel群里也问了几个,都说没有写过,于是自己写个吧。话不多说,见代码:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 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,例如:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 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 ;   }

以上这篇Laravel Eloquent ORM 多条件查询的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/a437629292/article/details/44038411

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容