yii学习笔记(6),连接数据库,创建活动记录类

创建数据库用于测试

配置数据库连接

打开yii的配置文件目录下的数据库配置文件config/db.php

1 <?php
2 
3 return [
4     'class' => 'yii\db\Connection',
5     'dsn' => 'mysql:host=数据库地址;dbname=数据库名称',
6     'username' => '账号',
7     'password' => '密码',
8     'charset' => 'utf8',
9 ];

填写相关配置,注意:需要开启php的pdo扩展

 

创建活动记录类

活动记录类和数据库的表关联,用以访问和操作数据库中的数据

一般活动记录类名对应相关联的表名,如果不同在创建活动记录类的时候重写tableName()方法声明表名

活动记录被称为“模型”

models目录创建模型文件

1 <?php
2 namespace app\models;
3 
4 use yii\db\ActiveRecord;
5 
6 class Article extends ActiveRecord{
7     
8 }

类名和模型文件名称相同

需要定义明命空间为namespace app\models;

继承yii\db\ActiveRecord;

 

调用模型

在控制器中调用模型获取数据

 1 <?php
 2 namespace app\controllers;
 3 
 4 use yii;
 5 use yii\web\Controller;
 6 use app\models\Article;
 7 
 8 class HomeController extends Controller{
 9 
10     public $layout = "home";
11 
12     function actionIndex(){
13 
14         $request = Yii::$app->request;
15         $id = $request->get("id");
16 
17         // 定义sql语句,:id是占位符,防止sql注入
18         $sql = "select * from article where id = :id";
19         // 调用查询方法通过sql语句获取数据,第二个参数是给占位符替换内容
20         $r = Article::findBySql($sql,[":id"=>$id])->all();
21         dd($r);
22         // 加载视图
23         return $this->render("index",compact("host","text"));
24     }
25 }

结果如下:

yii提供了防止sql注入的方法

在定义sql语句时用户输入内容采用了占位符

在调用查询方法时将数据和占位符匹配绑定和其他处理,并不是直接拼接sql语句

 

基本的查询操作

// 获取全部数据
$data = Article::find()->all();
// 获取id=5的记录
$data = Article::find()->where(["id"=>5])->all();
// 获取id>5的记录
$data = Article::find()->where([">","id",5])->all();
// 获取id>2,id<5之间的记录
$data = Article::find()->where(["between","id",2,5])->all();
// 模糊查询like
$data = Article::find()->where(["like","title","Google"],[">","id",3])->all();
// 获取一条记录,默认条件是id
$data = Article::findOne(5);
// 获取多天记录
$data = Article::findAll([2,3,5]);

详细的可以查看中文文档http://www.yiichina.com/doc/guide/2.0/db-active-record

posted @ 2018-05-31 15:02  hl450  阅读(315)  评论(0)    收藏  举报