Yii2增删改查-查询 where参数详细介绍

本文详细介绍了在Yii框架中如何使用AND、OR、BETWEEN、IN和LIKE等操作符构建复杂的查询条件。通过具体实例展示了每种操作符的应用场景及编写技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

由于官方手册关于where的介绍比较少,所以想自己整理一下,以便大家的学习和自己回头查询。本篇文章会详细介绍andorbetweeninlike在where方法中的使用方法和举例。

and
// 我们要查询id大于1并且小于3的数据
$userInfo = User::find()->where(['and' , 'id > 1' , 'id < 3'])->all();
// 或者用以下方式,更为安全
$userInfo = User::find()->where(['and' , ['>' , 'id' , 1] , ['<' , 'id' , 3]])->all();
// 往往我们会处理比这更复杂的sql
// 假如我们要查询name是王五 并且 id大于1或者id小于3的数据
$userInfo = User::find()->where(
            ['and' , 
                ['=' , 'name' , '王五'] , 
                ['or' , 
                    ['=' , 'id' , 1] , 
                    ['=' , 'id' , 3]
                ]
            ])->asArray()->all();
// 注:asArray()方法会将数据以数组的方式显示
or
// 我们要查询id等于1或者id等于3的数据
$userInfo = User::find()->where(['or' , 'id = 1' , 'id = 3'])->all();
// 我们同样可以使用以下方式
$userInfo = User::find()->where(['or' , ['=' , 'id' , 1] , ['=' , 'id' , 3]])->all();
// 假如我们要查询id在4,8,9范围内 或者 id在1,2,3范围内呢?
$userInfo = User::find()->where(['or' , ['id' => [4,8,9]] , ['id' => [1,2,3]]])->all();
between
// 我们要查询id在1到10的范围之内
$userInfo = User::find()->where(['between' , 'id' , 1 , 10])->all();
in
// 我们要查询id在1、2、3的范围内
$userInfo = User::find()->where(['in' , 'id' , [1,2,3]])->all();
like
// 我们要查询name中包含“张”这个字符的数据
$userInfo = User::find()->where(['like' , 'name' , '张'])->all();
// 我们假如要通配name中包含“张”这个字符,而且还得包含“三”这个字符
$userInfo = User::find()->where(['like' , 'name' , ['张' , '三']])->all();
// 我们假如只需要通配左边即可
$userInfo = User::find()->where(['like' , 'name' , '%三' , false])->all();
// 所以,右边也是同样
### Yii2 框架中的增删改查功能实现 Yii2 是一种高性能 PHP 框架,支持快速开发 Web 应用程序。CRUD(Create, Read, Update, Delete)操作是任何数据库驱动应用程序的核心部分之一,在 Yii2 中可以通过多种方式轻松实现这些功能。 #### 创建记录 (Create) 创建新记录通常涉及实例化模型类并调用 `save()` 方法来保存数据到数据库中。下面是一个简单的例子: ```php $user = new \app\models\User(); // 假设 User 是一个 ActiveRecord 类 $user->name = 'John Doe'; $user->email = 'john.doe@example.com'; if ($user->save()) { echo "User created successfully."; } else { print_r($user->getErrors()); } ``` 此代码片段展示了如何通过设置属性值并将对象传递给 `save` 函数来插入一条新的用户记录[^1]。 #### 查询记录 (Read) 查询可以简单至检索单条记录或者复杂到多表联接的大规模数据集。基本的读取操作如下所示: ```php // 获取单一记录 $user = \app\models\User::findOne(1); echo $user->name; // 输出用户的名称 // 使用条件查找多个记录 $users = \app\models\User::find() ->where(['status' => 1]) ->all(); foreach ($users as $user) { echo $user->name . "\n"; } ``` 上述示例说明了两种常见的读取模式:一是基于主键获取特定实体;二是利用链式语法构建更复杂的查询语句[^2]。 #### 更新记录 (Update) 更新现有记录类似于创建过程,区别在于先要找到目标记录再修改其字段后再存回数据库。 ```php $user = \app\models\User::findOne(1); $user->email = 'new.email@example.com'; if ($user->save()) { echo "Email updated."; } else { print_r($user->errors); } ``` 这里演示了一个典型的更新流程——定位指定 ID 的用户,并更改他们的电子邮件地址之后再次调用 save() 来提交改动[^3]。 #### 删除记录 (Delete) 删除动作可以直接作用于已加载的对象上执行销毁命令,也可以直接针对未加载的数据发出指令。 ```php // 对象导向的方式 $user = \app\models\User::findOne(1); $user->delete(); // 或者不加载对象而直接移除某行资料 \app\models\User::deleteAll('id=:id', [':id'=>1]); ``` 这两种方法都可以有效地从数据库中清除不需要的信息[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值