YII2数据库如何查询
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,小编给大家分享一下YII2数据库如何查询,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!数据库配置。/config/db.p
千家信息网最后更新 2025年02月01日YII2数据库如何查询
小编给大家分享一下YII2数据库如何查询,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
数据库配置。
/config/db.php 进行数据库配置
实践过程中有个test库-》test表-》两条记录如下
mysql> select * from test;+----+--------+| id | name |+----+--------+| 1 | zhuai || 2 | heng | +----+--------+18 rows in set (0.00 sec)
sql 查询方式
yii2 提供了原始的数据库查询方式findBySql;同时, 通过占位符的方式,自动进行了基本的sql注入防御 。上码
// 最基本的查询方式$sql = "select * from test where 1";$res = Test::findBySql($sql)->all();var_dump(count($res)); // res->2 // findbysql 防止sql注入方式$id = '1 or 1=1';$sql = "select * from test where id = " . $id;$res = Test::findBySql($sql)->all();var_dump(count($res)); // res-> 2$sql = "select * from test where id = :id";// 定位符会自动防止sql 注入$res = Test::findBySql($sql,array(":id"=>$id))->all();var_dump(count($res)); // res->1
activeRecord查询方式
每个框架除了原有的sql方式,都会提供相应的封装的查询方式,yii2亦然。
创建model
yii的model基本方式如下,代码如下不赘述。
[0, 100]],];}}
使用的时候需要引入model
use app\models\Test;增加操作// add 操作$test = new Test();$test->name = 'test';// 合法性校验$test->validate();if($test->hasErrors()){echo "数据不合法";die;}$test->save();
查询操作
查询操作先上官方文档
activeRecord doc
where doc
需要强调的是:yii查询提供了特别多丰富的库,例如代码中的批量查询处理等等,细节可以看文档。
// select// id = 1$res = Test::find()->where(['id' => 1])->all();var_dump(count($res)); //1// id > 0$res = Test::find()->where(['>','id',0])->all();var_dump(count($res)); //2// id > =1 id <=2$res = Test::find()->where(['between','id',1,2])->all();var_dump(count($res)); //2// name字段like$res = Test::find()->where(['like', 'name', 'cuihuan'])->all();var_dump(count($res)); //2// 查询的使用 obj->array$res = Test::find()->where(['between','id',1,2])->asArray()->all();var_dump($res[0]['id']); //2// 批量查询,对于大内存操作的批量查询foreach (Test::find()->batch(1) as $test) {var_dump(count($test));}
删除操作
// delete // 选出来删除$res = Test::find()->where(['id'=>1])->all();$res[0]->delete();// 直接删除var_dump(Test::deleteAll('id>:id', array(':id' => 2)));
修改操作
除了代码中方式,yii2直接提供update操作。
// 活动记录修改$res = Test::find()->where(['id'=>4])->one();$res->name = "update";$res->save();
关联查询操作
关联查询示例中两个表:
一个学生表(student):id ,name;
一个分数表(score):id,stu_id,score
// 相应学生的所有score$stu = Student::find()->where(['name'=>'xiaozhuai'])->one();var_dump($stu->id);// 基本获取$scores_1 = $stu->hasMany('app\model\Score',['stu_id'=>$stu->id])->asArray()->all();$scores_2 = $stu->hasMany(Score::className(),['stu_id'=>'id'])->asArray()->all();var_dump($scores_1);var_dump($scores_2);
两种关联查询方式;但是,在controller进行相关操作,代码显的过于混乱,在model中封装调用
首先在student model中封装相关关联调用函数
hasMany(Score::className(), ['stu_id' => 'id'])->asArray()->all();return $scores;}}
之后直接调用,两种调用方式
// 函数封装之后调用$scores = $stu->getScores();var_dump($scores);// 利用__get 的自动调用的方式$scores = $stu->scores;var_dump($scores);
以上是"YII2数据库如何查询"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
查询
方式
数据
数据库
代码
关联
封装
篇文章
内容
函数
学生
文档
配置
原始
合法
混乱
不怎么
两个
分数
合法性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
怎么把javaweb部署到服务器
明日之后第四季的服务器
上市公司财务报表数据库
安装20008数据库
黄浦区现代软件开发服务商密度
我的世界国际服服务器加载不出
北京服务器负载均衡厂家云空间
网络安全博览会开幕
2017阿里云服务器
他勇当网络安全的安全员
字段与数据库的字段
本地上传文件到服务器
外包软件开发上市公司
跨年数据库连接失败
数据库建表 设置主键
渝北区一站式网络技术是什么
福鼎众信网络技术有限公司
如何获取服务器管理权
网吧服务器会影响网速吗
海康服务器的账号密码
军工网络安全分论坛
api插入数据库
网络安全美女
温度密度数据库
数据库前端和后台有什么区别
我的世界假装him吓服务器玩家
耐用的眼镜行业软件开发
方舟生存进化一起玩的服务器
excel好用的服务器
海康服务器分布部署