有一个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
中,然后获取到的结果中还是包含了全部字段。
请问该怎么使用呢?