您的位置:

深入理解ThinkPHP的wherein用法

一、基本概念


public function whereIn(string $field, array $data, string $condition = 'OR'): this

其中:

  • field:查询的字段名
  • data:需要查询的值数组
  • condition:查询条件,默认为or

该方法的作用是查询数据表中某个字段的值在一个数组范围内的数据。这个接口最后返回的对象即是当前查询的对象,可以在该对象上继续进行其他查询操作,例如where条件、order排序等查询操作。

二、基本用法

以wherein查询某个班级内多个学生的信息为例:


$data = ['小明', '小红', '小刚'];
$students = Db::table('student')->whereIn('name', $data)->select();

上述代码将查询student表中name字段为小明、小红、小刚的所有记录。

三、多条件查询

在wherein方法中设置多个查询条件,可以查询同时满足这些条件的数据。


$data = [
  ['age', '>', 18],
  ['province', '=', '广东省']
];
$students = Db::table('student')->whereIn($data)->select();

上述代码将查询student表中同时满足年龄大于18岁并且来自广东省的所有学生记录。

四、条件组合查询

在实际开发中,我们经常需要进行复杂的查询,例如实现以下查询:

  1. 查询学生信息中name字段为小明、小红或者小刚的记录
  2. 查询学生信息中性别为男且年龄大于18岁,或者性别为女且年龄大于16岁的所有记录

对于以上两个查询,可以使用wherein方法来轻松实现,具体代码如下:


// 查询学生信息中name字段为小明、小红或者小刚的记录
$data1 = ['小明', '小红', '小刚'];
$students1 = Db::table('student')->whereIn('name', $data1)->select();

// 查询学生信息中性别为男且年龄大于18岁,或者性别为女且年龄大于16岁的所有记录
$data2 = [
  ['sex', '=', '男'],
  ['age', '>', 18]
];
$data3 = [
  ['sex', '=', '女'],
  ['age', '>', 16]
];
$students2 = Db::table('student')->whereIn($data2)->whereOr($data3)->select();

总结

在实际开发中,wherein方法是非常常用的查询方式之一,通过对该方法的深入了解和灵活应用,可以有效地提高我们的开发效率。