如何查询YII2数据库

分类:编程技术 时间:2024-02-20 15:32 浏览:0 评论:0
0
小编给大家分享一下如何查询YII2数据库。相信大多数人对此还不是很了解,所以分享这篇文章供大家参考。希望您读完这篇文章后能有所收获。我们一起来了解一下吧。酒吧!

数据库配置。

/config/db.php进行数据库配置

实践过程中,有一个测试库-》测试表-》两条记录如下

mysql> select * from test;+----+--------+|编号 |姓名 |+----+--------+| 1 |抓|| 2 |恒| +----+--------+18 rows in set (0.00 sec)

sql查询方法

yii2提供了原有的数据库查询方法findBySql;同时通过占位符自动进行基本的SQL注入防御。代码上的代码

//最基本的查询方法 $sql = "select * from test where 1";$res = Test::findBySql($sql)->所有 ();var_dump(count($res)); // res->2 // findbysql 防止sql注入 $id = '1 or 1=1';$sql = "从测试中选择*,其中 id = " 。 $ id;$res = 测试::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 来说也是如此。

创建模型

yii的模型基本方法如下,下面不再详细介绍代码。

 [0, 100]],];}}

使用时需要引入model

use app\models\Test;添加操作//添加操作$test = new Test();$ test->name = 'test';//有效性验证$test->validate();if($test->hasErrors( )){echo "非法数据";die;}$test->save();< /pre>

查询操作

查询操作请先查看官方文档

activeRecord doc

其中doc

需要强调的是,Yii query提供了特别丰富的库,比如代码中的批量查询处理等,具体请看文档。

// select// id = 1$res = Test::find()->where(['id' => 1])->all() ;var_dump(计数($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// 名称字段 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));}

删除操作

//删除 //选择删除 $ res = Test::find()->where(['id'= >1])->all();$res[0]->delete();// 删除 var_dump(Test::deleteAll(' id>:id', array(':id' => 2))) ;

修改操作

除了代码方法外,yii2还直接提供了更新操作。

//活动记录修改 $res = Test::find()->where(['id'=>4])->one();$res ->name = "update";$res->save();

相关查询操作

相关查询示例中的两个表: p>

学生表(student):id,name;

成绩表(score):id,stu_id,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);

两个相关的查询方法;然而,在控制器中执行相关操作时,代码过于混乱。将调用封装在模型中

首先在学生模型中封装相关关联调用函数

 hasMany(Score::className() , ['stu_id' => 'id'])->asArray()->all();return $scores;}}

然后直接调用,两种调用方式

//函数封装后调用 $scores = $stu->getScores();var_dump($scores) ;//使用__get的自动调用方法 $scores = $stu->scores;var_dump($scores);

以上是《如何查询》一文的全部内容YII2数据库》,感谢您的阅读!相信大家都有一定的了解,希望分享的内容对大家有所帮助。如果您想了解更多知识,请关注行业资讯频道!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何查询YII2数据库

用户评论