首页 > Yii2 ActiveRecord 数据库字段过滤问题

Yii2 ActiveRecord 数据库字段过滤问题

有一个Yii2关于ActiveRecord的一个问题,比如数据库中files表有uid,name,url,filetype,create_time,enable等字段,我在models建立了这个表对应的model:

<?php
namespace common\models;

use Yii;
use yii\db\ActiveRecord;

/**
* 文件
*/
class File extends ActiveRecord
{
    public static function tableName()
    {
        return '{{%files}}';
    }

}

现在我通过如下方法获取数据:

$files = File::find()->where(['enable' => '1'])->orderBy('id DESC')->all();

这样获取的数据包含了该表的所有字段,但是我只需要其中的idnameurl,不想enablecreate_time等字段也被获取出来。
我查到了ActiveRecord中有两个函数fields,extraFields:

public function fields()
{
    $fields = parent::fields();
    // 去掉一些包含敏感信息的字段
    unset($fields['enable'], $fields['create_time']);
    return $fields;
}

public function extraFields()
{
    return [
        'fileType' => function (){
            return Yii::$app->params['file_file_type'][$this->filetype];
        }
    ];
}

我把这两个函数加到File.php中,然后获取到的结果中还是包含了全部字段。
请问该怎么使用呢?


$files = File::find()->select(['id', 'url', 'name'])->where(['enable' => '1'])->orderBy('id DESC')->all();

请问 这个问题 你解决了吗

【热门文章】
【热门文章】