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();
这样获取的数据包含了该表的所有字段,但是我只需要其中的
id
、
name
、
url
,不想
enable
、
create_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
中,然后获取到的结果中还是包含了全部字段。
请问该怎么使用呢?
沉默的乌鸦
9 years ago