YII2.0实战开发小结

本文介绍了一个使用YII框架进行数据库操作的实例,包括查询、更新、条件筛选及统计数据等核心功能实现方式。
 1、
$applycar = Applycar::find()
->where('{{%applycar}}.complete = 1')
->joinWith('car')
->joinWith('driver')
->asArray()
->orderBy('{{%applycar}}.id DESC');
如上联合中joinWith('driver')中的driver来自models/Applycar.php中
public function getDriver() {
return $this->hasOne(Adminer::className(), ['uid' => 'drid']);
}
 
public function getCar() {
return $this->hasOne(Car::className(), ['id' => 'cid']);
}
Adminer表中的uid跟Applaycar表中drid相关联
 
$param = array();
if ($param['drname'] = trim($request->get('drname'))) {
$applycar->andWhere('{{%adminer}}.truename = "'.$param['drname'].'"');
}
if ($param['carnumber'] = trim($request->get('carnumber'))) {
$applycar->andWhere('{{%car}}.license = "'.$param['carnumber'].'"');
}
如上:{{%adminer}}指的是表ol_adminer,ol是表前缀
car同上
$applycar->andWhere
用andWhere来连接条件语句
if(!empty($param)){
//定义获取总公里数
$totalkm = $applycar->sum('usekm');
//定义获取总加班小时
$totalhour = $applycar->sum('overtime');//用sum方法来统计总数:参数为列名
}
//定义列表查询
        $applycar = $applycar->all();
$typeArr = array('0'=>'司机','1'=>'自驾');

foreach($applycar as $akey => &$aval){
$aval['driver'] = Adminer::findOne($aval['drid']);
}
Adminer::findOne
根据参数查询一条语句
        return $this->render('record',[
            'applycar' => $applycar,
'typeArr' => $typeArr,
'totalkm' => $totalkm,
'totalhour' => $totalhour,
'param' => $param,
        ]);
render第一个参数是views下面的record.php模板文件名
'applycar' => $applycar,
参数是把值传递到模板applycar
2、方法的定义
    public function actionAjaxdelapplycar() {
必须加前缀action
访问的时候是ajaxdelapplycar
3、页面跳转的执行
return $this->runAction('login');
跳转到login页面

4、数据的接收
        $request = Yii::$app->request;//用对象的形式
$applycar = Applycar::findOne($request->post('apid'));
$applycar->usekm = $request->post('usekm');
$applycar->overtime = $request->post('overtime');
$applycar->complete = 1;
$applycar->comptime = time();
$result = $applycar->save();//保存更新都是save()
5、
新建控制器放在Controller下
所有操作都在Controller下执行即可
所有的models下面对应的Applycar.php实体化的表文件 里面一般写一些验证 联合查询等等
views就是我们要存储的模板文件
以CarsController为例views下面对应的模板文件为cars/文件名
对应的render中的第一个参数

6、YII引入CSS和JS文件之公共文件路径
assets/AppAsset.php

7、
把变量传递给页面,页面结果作为content变量传递给布局文件  $this->render 
contoller控制器之间跳转的方法$this->redirect
 return $this->render('index');//跳转到当前控制器默认的方法
 return $this->redirect(array('/cars/dispatch')); //跳转到cars控制器的dispatch方法

8、YII原生SQL语句

//查询 

$connection  = Yii::$app->db;
$sql = "...";   
$command = $connection->createCommand($sql);  
$result  = $command->queryAll(); 

//更新、删除
$upsql = "...";   
$command_update = $connection->createCommand($upsql);  
$result_update  = $command_update->execute(); 
if($result_update){
    ...
}else{
    ...


9、YII模板原生SQL查询 
 
<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;

$this->layout = 'XX管理';
$this->position = 'XXXX';

//查询
$result= (new \yii\db\Query())
->select(['id' , 'email'])
->from('user')
->where(['mid' => $member['id']])
    ->limit(10) 
->all();
        //->one();
解析为:
SELECT `id``email` FROM `user` WHERE `mid` = :mid LIMIT 10 
?> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值