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数组应该有多大的分析
Jul 30 PHP
PHP批量采集下载美女图片的实现代码
Jun 03 PHP
yii框架配置默认controller和action示例
Apr 30 PHP
PHP的preg_match匹配字符串长度问题解决方法
May 03 PHP
php实现文件下载代码分享
Aug 19 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
Nov 18 PHP
php生成html文件方法总结
Dec 01 PHP
PHP register_shutdown_function()函数的使用示例
Jun 23 PHP
PHP简单读取xml文件的方法示例
Apr 20 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
laravel-admin的图片删除实例
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
Protoss兵种介绍
2020/03/14 星际争霸
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
php下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
20个非常有用的PHP类库 加速php开发
2010/01/15 Javascript
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
2011/07/10 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
IE不支持getElementsByClassName最终完美解决方案
2012/12/17 Javascript
js 窗口抖动示例
2013/09/04 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
元素绑定click点击事件方法
2015/06/08 Javascript
在JavaScript中处理数组之reverse()方法的使用
2015/06/09 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
2017/11/17 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
vue绑定数字类型 value为数字的实例
2020/08/31 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
python通过floor函数舍弃小数位的方法
2015/03/17 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
XD健身器材:Kevlar球、Crossfit健身球
2019/03/26 全球购物
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
main 函数执行以前,还会执行什么代码
2013/04/17 面试题
服装设计行业个人的自我评价
2013/12/20 职场文书
银行存款证明样本
2014/01/17 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
《她是我的朋友》教学反思
2014/04/26 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
2015毕业寄语大全
2015/02/26 职场文书
python周期任务调度工具Schedule使用详解
2021/11/23 Python