Yii2数据库操作常用方法小结


Posted in PHP onMay 04, 2017

本文实例讲述了Yii2数据库操作常用方法。分享给大家供大家参考,具体如下:

查询:

// find the customers whose primary key value is 10
$customers = Customer::findAll(10);
$customer = Customer::findOne(10);
// the above code is equivalent to:
$customers = Customer::find()->where(['id' => 10])->all();
// find the customers whose primary key value is 10, 11 or 12.
$customers = Customer::findAll([10, 11, 12]);
$customers = Customer::find()->where(['IN','id',[10,11,12]])->all();
// the above code is equivalent to:
$customers = Customer::find()->where(['id' => [10, 11, 12]])->all();
// find customers whose age is 30 and whose status is 1
$customers = Customer::findAll(['age' => 30, 'status' => 1]);
// the above code is equivalent to:
$customers = Customer::find()->where(['age' => 30, 'status' => 1])->all();
// use params binding
$customers = Customer::find()->where('age=:age AND status=:status')->addParams([':age'=>30,':status'=>1])->all();
// use index
$customers = Customer::find()->indexBy('id')->where(['age' => 30, 'status' => 1])->all();
// get customers count
$count = Customer::find()->where(['age' => 30, 'status' => 1])->count();
// add addition condition
$customers = Customer::find()->where(['age' => 30, 'status' => 1])->andWhere('score > 100')->orderBy('id DESC')->offset(5)->limit(10)->all();
// find by sql
$customers = Customer::findBySql('SELECT * FROM customer WHERE age=30 AND status=1 AND score>100 ORDER BY id DESC LIMIT 5,10')->all();

修改:

// update status for customer-10
$customer = Customer::findOne(10);
$customer->status = 1;
$customer->update();
// the above code is equivalent to:
Customer::updateAll(['status' => 1], 'id = :id',[':id'=>10]);

删除:

// delete customer-10
Customer::findOne(10)->delete();
// the above code is equivalent to:
Customer::deleteAll(['status' => 1], 'id = :id',[':id'=>10]);

----------------使用子查询----------------------

$subQuery = (new Query())->select('COUNT(*)')->from('customer');
// SELECT `id`, (SELECT COUNT(*) FROM `customer`) AS `count` FROM `customer`
$query = (new Query())->select(['id', 'count' => $subQuery])->from('customer');

----------------手写SQL-----------------------

// select
$customers = Yii::$app->db->createCommand('SELECT * FROM customer')->queryAll();
// update
Yii::$app->db->createCommand()->update('customer',['status'=>1],'id=10')->execute();
// delete
Yii::$app->db->createCommand()->delete('customer','id=10')->execute();
//transaction
// outer
$transaction1 = $connection->beginTransaction();
try {
  $connection->createCommand($sql1)->execute();
  // internal
  $transaction2 = $connection->beginTransaction();
  try {
    $connection->createCommand($sql2)->execute();
    $transaction2->commit();
  } catch (Exception $e) {
    $transaction2->rollBack();
  }
  $transaction1->commit();
} catch (Exception $e) {
  $transaction1->rollBack();
}

---------------主从配置----------------------

[
  'class' => 'yii\db\Connection',
  // master
  'dsn' => 'dsn for master server',
  'username' => 'master',
  'password' => '',
  // slaves
  'slaveConfig' => [
    'username' => 'slave',
    'password' => '',
    'attributes' => [
      // use a smaller connection timeout
      PDO::ATTR_TIMEOUT => 10,
    ],
  ],
  'slaves' => [
    ['dsn' => 'dsn for slave server 1'],
    ['dsn' => 'dsn for slave server 2'],
    ['dsn' => 'dsn for slave server 3'],
    ['dsn' => 'dsn for slave server 4'],
  ],
]

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP print类函数使用总结
Jun 25 PHP
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
Dec 19 PHP
PHP验证码函数代码(简单实用)
Sep 29 PHP
php数组编码转换示例详解
Mar 11 PHP
PHP函数strip_tags的一个bug浅析
May 22 PHP
php中的mongodb select常用操作代码示例
Sep 06 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
Oct 23 PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 PHP
基于PHP实现商品成交时发送短信功能
May 11 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
Aug 04 PHP
PHP getNamespaces()函数讲解
Feb 03 PHP
php7下的filesize函数
Sep 30 PHP
Yii2中添加全局函数的方法分析
May 04 #PHP
Yii2表单事件之Ajax提交实现方法
May 04 #PHP
PHP经典实用正则表达式小结
May 04 #PHP
PHP实现的简单异常处理类示例
May 04 #PHP
PHP基于新浪IP库获取IP详细地址的方法
May 04 #PHP
PHP 无限级分类
May 04 #PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 #PHP
You might like
Zerg基本策略
2020/03/14 星际争霸
php实现encode64编码类实例
2015/03/24 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
2020/11/27 PHP
百度 popup.js 完美修正版非常的不错 脚本之家推荐
2009/04/17 Javascript
Extjs学习笔记之六 面版
2010/01/08 Javascript
jQuery对象[0]是什么含义?
2010/07/31 Javascript
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
聊一聊Vue.js过渡效果
2016/09/07 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
webpack下实现动态引入文件方法
2018/02/22 Javascript
angular动态表单制作
2018/02/23 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
python django集成cas验证系统
2014/07/14 Python
Python探索之SocketServer详解
2017/10/28 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
python输入多行字符串的方法总结
2019/07/02 Python
python如何使用Redis构建分布式锁
2020/01/16 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
python 基于opencv 绘制图像轮廓
2020/12/11 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
介绍一下Python中webbrowser的用法
2013/05/07 面试题
网上开店必备创业计划书
2014/01/26 职场文书
主题实践活动总结
2014/05/08 职场文书
学校地质灾害防治方案
2014/06/10 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书