Laravel Eloquent ORM 多条件查询的例子

时间:2022-11-06 21:23:01

一、需求:

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