Yii2数据库操作常用方法小结
本文实例讲述了Yii2数据库操作常用方法。分享给大家供大家参考,具体如下:
查询:
//findthecustomerswhoseprimarykeyvalueis10 $customers=Customer::findAll(10); $customer=Customer::findOne(10); //theabovecodeisequivalentto: $customers=Customer::find()->where(['id'=>10])->all(); //findthecustomerswhoseprimarykeyvalueis10,11or12. $customers=Customer::findAll([10,11,12]); $customers=Customer::find()->where(['IN','id',[10,11,12]])->all(); //theabovecodeisequivalentto: $customers=Customer::find()->where(['id'=>[10,11,12]])->all(); //findcustomerswhoseageis30andwhosestatusis1 $customers=Customer::findAll(['age'=>30,'status'=>1]); //theabovecodeisequivalentto: $customers=Customer::find()->where(['age'=>30,'status'=>1])->all(); //useparamsbinding $customers=Customer::find()->where('age=:ageANDstatus=:status')->addParams([':age'=>30,':status'=>1])->all(); //useindex $customers=Customer::find()->indexBy('id')->where(['age'=>30,'status'=>1])->all(); //getcustomerscount $count=Customer::find()->where(['age'=>30,'status'=>1])->count(); //addadditioncondition $customers=Customer::find()->where(['age'=>30,'status'=>1])->andWhere('score>100')->orderBy('idDESC')->offset(5)->limit(10)->all(); //findbysql $customers=Customer::findBySql('SELECT*FROMcustomerWHEREage=30ANDstatus=1ANDscore>100ORDERBYidDESCLIMIT5,10')->all();
修改:
//updatestatusforcustomer-10 $customer=Customer::findOne(10); $customer->status=1; $customer->update(); //theabovecodeisequivalentto: Customer::updateAll(['status'=>1],'id=:id',[':id'=>10]);
删除:
//deletecustomer-10 Customer::findOne(10)->delete(); //theabovecodeisequivalentto: Customer::deleteAll(['status'=>1],'id=:id',[':id'=>10]);
----------------使用子查询----------------------
$subQuery=(newQuery())->select('COUNT(*)')->from('customer'); //SELECT`id`,(SELECTCOUNT(*)FROM`customer`)AS`count`FROM`customer` $query=(newQuery())->select(['id','count'=>$subQuery])->from('customer');
----------------手写SQL-----------------------
//select $customers=Yii::$app->db->createCommand('SELECT*FROMcustomer')->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'=>'dsnformasterserver', 'username'=>'master', 'password'=>'', //slaves 'slaveConfig'=>[ 'username'=>'slave', 'password'=>'', 'attributes'=>[ //useasmallerconnectiontimeout PDO::ATTR_TIMEOUT=>10, ], ], 'slaves'=>[ ['dsn'=>'dsnforslaveserver1'], ['dsn'=>'dsnforslaveserver2'], ['dsn'=>'dsnforslaveserver3'], ['dsn'=>'dsnforslaveserver4'], ], ]
更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。