Yii2.0 数据库操作增删改查详解

Yii2.0 数据库操作增删改查详解

1.简单查询:

%ignore_pre_1%

应用实例:

Customer::find()->one();    此方法返回一条数据;Customer::find()->all();    此方法返回所有数据;Customer::find()->count();    此方法返回记录的数量;Customer::find()->average();    此方法返回指定列的平均值;Customer::find()->min();    此方法返回指定列的最小值 ;Customer::find()->max();    此方法返回指定列的最大值 ;Customer::find()->scalar();    此方法返回值的第一行第一列的查询结果;Customer::find()->column();    此方法返回查询结果中的第一列的值;Customer::find()->exists();    此方法返回一个值指示是否包含查询结果的数据行;Customer::find()->asArray()->one();    以数组形式返回一条数据;Customer::find()->asArray()->all();    以数组形式返回所有数据;Customer::find()->where($condition)->asArray()->one();    根据条件以数组形式返回一条数据;Customer::find()->where($condition)->asArray()->all();    根据条件以数组形式返回所有数据;Customer::find()->where($condition)->asArray()->orderBy('id DESC')->all();    根据条件以数组形式返回所有数据,并根据ID倒序;

2.关联查询:

ActiveRecord::hasOne():返回对应关系的单条记录ActiveRecord::hasMany():返回对应关系的多条记录

应用实例:

//客户表Model:CustomerModel //订单表Model:OrdersModel//国家表Model:CountrysModel//首先要建立表与表之间的关系 //在CustomerModel中添加与订单的关系      Class CustomerModel extends yiidbActiveRecord{    ...        public function getOrders()    {        //客户和订单是一对多的关系所以用hasMany        //此处OrdersModel在CustomerModel顶部别忘了加对应的命名空间        //id对应的是OrdersModel的id字段,order_id对应CustomerModel的order_id字段        return $this->hasMany(OrdersModel::className(), ['id'=>'order_id']);    }         public function getCountry()    {        //客户和国家是一对一的关系所以用hasOne        return $this->hasOne(CountrysModel::className(), ['id'=>'Country_id']);    }    ....}      // 查询客户与他们的订单和国家CustomerModel::find()->with('orders', 'country')->all();// 查询客户与他们的订单和订单的发货地址CustomerModel::find()->with('orders.address')->all();// 查询客户与他们的国家和状态为1的订单CustomerModel::find()->with([    'orders' => function ($query) {        $query->andWhere('status = 1');        },        'country',])->all();

注:with中的orders对应getOrders

常见问题:在查询时加了->select();如下,要加上order_id,即关联的字段(比如:order_id)比如要在select中,否则会报错:undefined index order_id

// 查询客户与他们的订单和国家CustomerModel::find()->select('order_id')->with('orders', 'country')->all();findOne()和findAll():// 查询key值为10的客户$customer = Customer::findOne(10);$customer = Customer::find()->where(['id' => 10])->one();// 查询年龄为30,状态值为1的客户$customer = Customer::findOne(['age' => 30, 'status' => 1]);$customer = Customer::find()->where(['age' => 30, 'status' => 1])->one();// 查询key值为10的所有客户$customers = Customer::findAll(10);$customers = Customer::find()->where(['id' => 10])->all();// 查询key值为10,11,12的客户$customers = Customer::findAll([10, 11, 12]);$customers = Customer::find()->where(['id' => [10, 11, 12]])->all();// 查询年龄为30,状态值为1的所有客户$customers = Customer::findAll(['age' => 30, 'status' => 1]);$customers = Customer::find()->where(['age' => 30, 'status' => 1])->all();

where()条件:

$customers = Customer::find()->where($cond)->all(); $cond写法举例:// SQL: (type = 1) AND (status = 2).$cond = ['type' => 1, 'status' => 2] // SQL:(id IN (1, 2, 3)) AND (status = 2)$cond = ['id' => [1, 2, 3], 'status' => 2] //SQL:status IS NULL$cond = ['status' => null]

[[and]]:将不同的条件组合在一起,用法举例:

//SQL:`id=1 AND id=2`$cond = ['and', 'id=1', 'id=2']//SQL:`type=1 AND (id=1 OR id=2)`$cond = ['and', 'type=1', ['or', 'id=1', 'id=2']]

[[or]]:

//SQL:`(type IN (7, 8, 9) OR (id IN (1, 2, 3)))`$cond = ['or', ['type' => [7, 8, 9]], ['id' => [1, 2, 3]]

[[not]]:

//SQL:`NOT (attribute IS NULL)`$cond = ['not', ['attribute' => null]]

[[between]]: not between 用法相同

//SQL:`id BETWEEN 1 AND 10`$cond = ['between', 'id', 1, 10]

[[in]]: not in 用法类似

//SQL:`id IN (1, 2, 3)`$cond = ['in', 'id', [1, 2, 3]]//IN条件也适用于多字段$cond = ['in', ['id', 'name'], [['id' => 1, 'name' => 'foo'], ['id' => 2, 'name' => 'bar']]]//也适用于内嵌sql语句$cond = ['in', 'user_id', (new Query())->select('id')->from('users')->where(['active' => 1])]

[[like]]:

//SQL:`name LIKE '%tester%'`$cond = ['like', 'name', 'tester']//SQL:`name LIKE '%test%' AND name LIKE '%sample%'`$cond = ['like', 'name', ['test', 'sample']]//SQL:`name LIKE '%tester'`$cond = ['like', 'name', '%tester', false]

[[exists]]: not exists用法类似

//SQL:EXISTS (SELECT "id" FROM "users" WHERE "active"=1)$cond = ['exists', (new Query())->select('id')->from('users')->where(['active' => 1])]此外,您可以指定任意运算符如下//SQL:`id >= 10`$cond = ['>=', 'id', 10]//SQL:`id != 10`$cond = ['!=', 'id', 10]

常用查询:

// WHERE admin_id >= 10 LIMIT 0,10 User::find()->select('*')->where(['>=', 'admin_id', 10])->offset(0)->limit(10)->all()// SELECT `id`, (SELECT COUNT(*) FROM `user`) AS `count` FROM `post`    $subQuery = (new Query())->select('COUNT(*)')->from('user');     $query = (new Query())->select(['id', 'count' => $subQuery])->from('post');  // SELECT DISTINCT `user_id` ...  User::find()->select('user_id')->distinct();

更新:

//update();//runValidation boolen 是否通过validate()校验字段 默认为true //attributeNames array 需要更新的字段 $model->update($runValidation , $attributeNames);  //updateAll();//update customer set status = 1 where status = 2Customer::updateAll(['status' => 1], 'status = 2'); //update customer set status = 1 where status = 2 and uid = 1;Customer::updateAll(['status' => 1], ['status'=> '2','uid'=>'1']);

删除:

$model = Customer::findOne($id);$model->delete();$model->deleteAll(['id'=>1]);

批量插入:

Yii::$app->db->createCommand()->batchInsert(UserModel::tableName(), ['user_id','username'], [    ['1','test1'],    ['2','test2'],    ['3','test3'],   ])->execute();

查看执行sql

//UserModel $query = UserModel::find()->where(['status'=>1]); echo $query->createCommand()->getRawSql();

推荐教程:YII教程

以上就是Yii2.0 数据库操作增删改查详解的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/107627.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月22日 16:03:18
下一篇 2025年11月22日 16:12:32

相关推荐

  • 币安交易所官方APP下载,立即获取!(安卓/iPhone通用)

    想要随时随地安全、便捷地交易加密货币吗?第一步就是下载币安(binance)官方app。本指南将引导您完成从下载app到注册账户,再到设置安全防护的全过程,无论您是安卓用户还是iphone用户,都能轻松上手。 币安官网直达: 币安官方app: 第一步:下载App后的新用户注册流程 1、成功安装并打开…

    2025年12月9日 好文分享
    000
  • 什么是BOOK OF MEME(BOME)币?怎么买?BOME特点、功能及价格预测

    book of meme(bome)是一个永久的表情包画廊,由 pepe meme 背后的艺术家 darkfarm 创作。加密货币 bome 是 book of meme 使用的原生代币。 Binance币安 欧易OKX ️ Huobi火币️ 日本时间2024年3月15日,BOOK OF MEME(…

    2025年12月9日 好文分享
    000
  • 2025币安(Binance)官方APP下载:币安最新版客户端安装注册教程指南

    欢迎来到数字资产的世界!为了帮助您顺利开启交易之旅,我们为您准备了这份2025年最新、最详细的币安官方app下载、安装及注册教程。请跟随以下步骤,轻松创建并保护您的币安账户。 币安官网直达: 币安官方app: 一、 币安APP下载与安装 在开始注册前,请确保您已从官方渠道下载了最新版的币安APP。您…

    2025年12月9日 好文分享
    000
  • 币安官网(Binance)入口 币安(Binance)官方认证安全登录地址(含备用)

    为了保障您的账户与资产安全,避免用户因访问到仿冒或钓鱼网站而造成损失,本文将提供币安(binance)经过官方严格认证的安全登录地址。请务必收藏并始终通过以下官方入口进行访问,确保您的每一次操作都处于平台的安全保护之下。 币安官方认证安全主入口: 币安官方认证备用安全入口: 通过官方App安全访问币…

    2025年12月9日 好文分享
    000
  • 币安交易所2025最新官网入口:移动端APP下载与一键注册流程全解析

    随着数字货币市场的不断发展,拥有一个安全可靠的交易账户至关重要。本文将为您提供币安(binance)交易所2025年最新的移动端app下载与注册指南,从账户创建到安全设置,助您轻松开启数字资产之旅。 币安官网直达: 币安官方app: 第一部分:币安APP下载与账户注册 1、启动应用,开始注册    …

    2025年12月9日 好文分享
    000
  • 币安Binance官方网站登录 2025币安Binance首页最新直连网页版入口

    为确保用户能够顺利登录币安(binance)官方网站,本文特此提供2025年最新直连网页版入口。通过以下官方渠道,您可以安全、快速地访问币安首页,进行登录和交易。同时,我们也会介绍其官方app的下载方式,方便您在移动设备上随时操作。 2025币安Binance首页最新直连网页版入口: 币安官方App…

    2025年12月9日 好文分享
    000
  • 币安交易所怎么样?安全吗?靠谱吗?币安新手用户使用教程

    币安官网入口: 币安交易所(Binance)是全球领先的加密货币交易平台之一,致力于为用户提供安全、便捷的数字资产交易服务。平台支持多种主流加密货币的交易,并提供丰富的交易产品,包括现货交易、合约交易、理财产品等。本文将为用户提供官方币安App的下载链接,点击本文提供的下载链接即可开始下载。 下载币…

    2025年12月9日 好文分享
    000
  • 币安官方App下载最新版地址 2025币安Binance手机/网页版通用安全入口

    作为全球领先的数字资产交易平台,币安致力于为所有用户提供无缝的交易体验,其官方应用完美兼容安卓(android)和苹果(ios)系统,是您进入数字货币世界的安全保障。为了确保用户能够安全、高效地使用币安(binance),本文将为您提供面向2025年的最新版币安官方app下载地址,以及一个手机与网页…

    2025年12月9日 好文分享
    000
  • 币安(Binance)2025年最新版下载:官方APP安装与安全注册流程详解

    欢迎来到币安(binance)的世界!作为全球领先的数字资产交易平台,确保您的账户从下载安装第一步起就安全无虞至关重要。本篇指南将为您详细解读2025年最新版币安官方app的下载、安装,以及如何完成一套安全、完整的注册与认证流程,助您轻松开启数字资产之旅。 币安官网直达: 币安官方app: 第一部分…

    2025年12月9日 好文分享
    000
  • 如何创建币安账户?如何在币安交易加密货币?

    币安官网入口: 币安(Binance)是全球领先的加密货币交易平台之一,提供比特币、以太坊、莱特币等多种主流及新兴数字货币的交易服务。它以其高度安全的系统、丰富的功能和用户友好的界面而受到全球数百万用户的青睐。本文将为您提供币安官方APP的下载安装教程,您只需点击本文提供的下载链接,即可轻松获取并安…

    2025年12月9日 好文分享
    000
  • 2025币安APP官方客户端下载:从注册到交易的完整入门指南

    欢迎来到币安的世界!作为全球领先的数字资产交易平台,币安提供了丰富的功能和强大的安全性。本指南将作为您在2025年的最新入门手册,带您从安全下载官方app开始,一步步完成账户注册、身份认证、安全设置,并最终开启您的第一笔交易。让我们开始吧! 币安官网直达: 币安官方app: 第一部分:官方App下载…

    2025年12月9日 好文分享
    000
  • 2025访问币安官网最新入口:移动端APP客户端下载及新手注册教程

    欢迎来到2025年币安(binance)新手指南。为了确保您的资产安全,请务必通过官方渠道访问币安并下载其移动端app。本教程将引导您完成从app下载、新用户注册到账户安全设置的全过程,助您轻松开启数字资产之旅。 币安官网直达: 币安官方app: 一、 币安App下载与安装 首先,请访问币安官方网站…

    2025年12月9日 好文分享
    000
  • 火币交易所官网通道 HTX安卓苹果双端APP下载

    Binance币安 欧易OKX ️ Huobi火币️ 火币HTX是当前主要的数字资产交易平台,其官方应用程序支持安卓和苹果双端设备。用户可通过官方网站获取正确的下载链接,避免访问非官方渠道带来的安全风险。平台已更新品牌标识,现以HTX为主要名称进行运营。 如何安全下载HTX官方APP 为确保账户与资…

    2025年12月9日
    000
  • 欧易官方下载入口 2025欧易OKX官网正版APP获取教程

    Binance币安 欧易OKX ️ Huobi火币️ 要获取2025年欧易OKX官网正版APP,最关键的是确保访问的是官方网站,避免下载到仿冒或带有风险的应用。当前欧易已更名为欧易OKX,其主要业务为数字资产交易及相关服务。 确认官方网站地址 打开浏览器,输入欧易OKX的官方网址。请务必核对域名拼写…

    2025年12月9日
    000
  • 币安官网地址直达 Binance官方最新版注册与安装教程

    Binance币安 欧易OKX ️ Huobi火币️ 要访问币安官网并完成注册安装,关键在于找到正确链接并按步骤操作。网络信息混杂,直接搜索容易进入仿冒网站,务必通过可靠渠道获取地址。 币安官网如何直达 币安的官方网站是 binance.com。为确保安全,不要通过搜索引擎随意点击链接。建议手动输入…

    2025年12月9日
    000
  • 火币HTX交易所官网地址 火币安卓iOS双端官方入口

    Binance币安 欧易OKX ️ Huobi火币️ 火币HTX交易所的官网地址是 https://www.htx.com。这是其唯一官方网址,用户应通过此链接访问网站或下载官方应用,以避免进入仿冒网站造成资产损失。 如何安全访问官网和下载App 为确保账户与资金安全,建议采取以下方式获取官方入口:…

    2025年12月9日
    000
  • 火币HTX官方APP下载 火币交易平台注册+安装指南

    Binance币安 欧易OKX ️ Huobi火币️ 火币HTX是知名的数字资产交易平台,其官方App为用户提供行情查看、交易、资产管理等一站式服务。进行下载和注册时,必须通过正规渠道以确保账户与资金安全。 确认官方平台与下载渠道 目前火币品牌已升级为HTX,其官方网站是获取App的唯一可靠来源。切…

    2025年12月9日
    000
  • 安币交易所app注册步骤教程2025

    安币交易所app是一款广受欢迎的加密货币交易平台,为用户提供安全、便捷的数字资产交易服务。 币安交易所官网下载地址: 币安binance注册流程 1、首先打开币安App,点击界面上的【注册】按钮,开始创建您的账户。 2、您可以选择使用电子邮箱、手机号码,或通过Apple/谷歌账户快速注册。 3、请注…

    2025年12月9日 好文分享
    000
  • 币安Binance官方入口 币安APP安卓iOS双端下载指南

    Binance币安 欧易OKX ️ Huobi火币️ 币安(Binance)作为全球主要的加密货币交易平台之一,为用户提供安全、高效的数字资产交易服务。如果你需要下载官方正版的币安APP,务必通过正确渠道获取,避免访问仿冒网站或下载非官方应用,以防造成资产损失。 确认币安官方唯一入口 币安的官方网站…

    2025年12月9日
    000
  • 火币官方下载入口 2025HTX官网正版APP获取教程

    Binance币安 欧易OKX ️ Huobi火币️ 火币集团在2025年已完成品牌升级,其官方交易平台已由“火币”更名为HTX。用户应通过最新官方渠道下载HTX APP,避免访问非正规链接造成资产风险。 确认当前官方品牌为HTX 火币于近年启动全球化战略并进行品牌更新,原“Huobi Global…

    2025年12月9日
    000

发表回复

登录后才能评论
关注微信