一、需求:
在数据搜索时最常见的就是调用同一个方法查询,而查询的字段却可能是其中一个或其中的几个字段一起组合查询,例如:对列表的搜索,基本上都是几个字段随意组合搜索。那么在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