yii2 数据库常用操作记录

定义Controller

<?php
/**
 * 测试订单控制器
 * User: Administrator
 * Date: 2016/1/13
 * Time: 14:08
 */
namespace console\controllers;

use yii\console\Controller;
use yii\helpers\ArrayHelper;    // 常用数组操作类
use console\models\Ordertest;   // 订单测试Model

class OrderController extends Controller
{


    /**
     * 创建订单信息
     */
    public function actionCreate()
    {
        $model = new Ordertest;

        // 插入
        $model->user_id     = '';
        $model->order_no    = 'NO12345678966666';
        $model->save();

        // 更新
        $model = Ordertest::findOne(1);
        $model->user_id     = '';
        $model->order_no    = 'NO12345678966666';
        $model->save();

        /**
         * 更新( 修改所有order_no等于aaaaaa 修改成 bbbbbb)
         */
        Ordertest::updateAll(['order_no'=>'aaaaaa'], ['order_no'=>'bbbbbb']);

        /**
         * 删除
         */
        Ordertest::deleteAll();
        
        # 删除id=312
        Ordertest::deleteAll('id=:id', [':id' => 312]);
        
        # 删除type=2 并且 user_id in (86,72)
        Order::deleteAll(
            ['and', 'type = :type_id', ['not in', 'user_id', [86, 72]]],
            [':type_id' => 2]
        );


        /**
         * 查询 ( like )
         */
        Ordertest::find()->andFilterWhere(['like','name','洋']);

        /**
         * 查询 ( 排序 )
         */
        Ordertest::find()->OrderBy(['create_time'=>SORT_DESC]);

        /**
         * 主键查询
         */
        Ordertest::findOne(10);


        /**
         * 多条件查询
         *
         * ->one()  查询1个结果
         * ->count()  获取数量
         */
        Ordertest::find()->where(['name'=>'小洋'])->andwhere(['age'=>24])->all();

        /**
         * LEFT JOIN 链表查询
         */
        Ordertest::find()->join('LEFT JOIN', 'student', 'student.cid=customer.id')
            ->where('student.id=100')
            ->andwhere('is_ok=1')
            ->one();

        /**
         * 获取错误信息
         */
        $errors = $model->getFirstErrors();
        if ($errors) {
            $result['status'] = false;
            $result['message'] = current($errors);
        }

    }
}

定义Models

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2016/1/13
 * Time: 14:59
 * @file Order.php
 * @brief 订单模型
 */
namespace console\models;

use Yii;
use yii\db\ActiveRecord;
use yii\db\Query;

class Ordertest extends ActiveRecord {

    const STATUS_DELETED = -1;
    const STATUS_INACTIVE = 0;
    const STATUS_ACTIVE = 1;

    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return '{{%onramp_order_test}}';
    }

    /**
     * 配置数据验证格式
     * @inheritdoc 
     */
    public function rules()
    {
        return [
            [['user_id', 'order_no'], 'required'],              // 必须有
            [['user_id', 'order_no'], 'integer']                // 必须为正数
//            ['name', 'trim'],                                 // 去两端空格
//            ['name', 'string', 'length' => [2, 8]],           // 长度验证
//            [['name', 'slug'], 'string', 'max' => 200]        // name,slug必须为字符串,最大字符200
//            [['slug'], 'unique'],                             // 唯一
//            [['slug'],'filter','filter'=>function($value){    // slug定义过滤器
//                return StringHelper::generateCleanStr($value);
//            }],
//            [['title'],'default','value'=>function($model,$attribute){    // 默认值定义
//                return '未命名文档';
//            }],
        ];
    }


    /**
     * save 前置方法
     */
    public function beforeSave($insert)
    {
        //$error = $this->validate();   // save保存数据不需要手动调用rules验证规则

        if(parent::beforeSave($insert)){
            if($insert){
                $this->create_time = time();
            }
            $this->update_time = time();
            return true;
        }else{
            return false;
        }
    }


    /**
     * 根据用户ID获取用户信息
     *
     * @param $id
     * @return null|static
     */
    public static function findIdentity($id) {
        return static::findOne($id);
    }




    /**
     * save 后置方法
     */
    public function afterSave()
    {
        echo "保存后置";
    }

    /**
     * delete 后置方法
     */
    public function afterDelete(){
        die("删除后置");
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值