YII2-你所该知道的杀马特操作-优雅封装ActiveRecord

博客 · 本文由 · 加班中途去撩妹 · 发布于 2年前 · 1810 阅读
<?php
/**
 * Created by PhpStorm.
 * User: 16487
 * Date: 2018/3/29
 * Time: 11:24
 */

namespace app\models;

use yii\db\ActiveRecord;

/**
 * Class AccountAR
 * @package app\models
 * @property integer $id;//ID
 * @property string $account_classification;//科目类别
 * @property string $account_name;//科目名称
 * @property string $remarks;//科目备注
 */
class AccountAR extends ActiveRecord
{
    const TABLE_NAME = 'tb_account';
    const COLUMN_NAME_id = 'id'; //id
    const COLUMN_NAME_account_classification = 'account_classification'; //科目编号
    const COLUMN_NAME_account_name = 'account_name'; //科目名称
    const COLUMN_NAME_remarks = 'remarks';//科目备注

    public static function tableName()
    {
        return static::TABLE_NAME;
    }

    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'account_classification' => '科目编号',
            'account_name' => '科目名称',
            'remarks' => '备注',
        ];
    }
//添加一些常用的查询方法
    /**
     * @param $id integer
     * @return static
     */
    public static function findOneByID($id)
    {
        return static::findOne([self::COLUMN_NAME_id => $id]);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public static function getAllActiveQuery()
    {
        return static::find();
    }
}

代码这样写有很多好处,便于阅读以及良好的代码提示等,比如在PHPstorm下通能很友好的智能提示AccountAR::findOneByID(1)->account_name, 以及

$accountAR=new AccountAR();
accountAR->account_name='**';

也是能友好的输入->对属性进行了提示其中@property 注释标记了该class有哪些对象和变量,以及这个变量的类型,方法中 @param 表示参数类型,这样做对调用者也是一个良好的提示,@return是返回值的类型,调用者也能通过IDE立马知道返回了什么对象。而const COLUMN_NAME_*之类的变量的作用是对应了数据表中的列名,同时也为find数据时提供了友好的便利。比如$sccountARs=AccountAR::find()->where([AccountAR::COLUMN_NAME_account_name=>$text])->all();,这样及避免了频繁的输入字符导致的错误问题也能良好的提示使用者你的字符表中有哪些字段

评论数量:0