Yii2 Rest控制器和公共变量
我用Yii2框架制作了一个REST控制器。当我试图通过Yii2 Rest控制器和公共变量,rest,activerecord,yii2,Rest,Activerecord,Yii2,我用Yii2框架制作了一个REST控制器。当我试图通过ActiveRecord模型从数据库中检索记录时,JsonFormatter只提供真实属性。如何配置JsonFormatter也给我一个公共变量? 这是我的代码: 控制器 class MyController extends yii\rest\ActiveController { ... public function actionView($id) { $struct = \common\model
ActiveRecord
模型从数据库中检索记录时,JsonFormatter
只提供真实属性。如何配置JsonFormatter
也给我一个公共变量?
这是我的代码:
控制器
class MyController extends yii\rest\ActiveController
{
...
public function actionView($id)
{
$struct = \common\models\Struct::find()->where(['id' => '285'])->One();
if ($struct) {
return $struct;
}
return false;
}
}
模型
请求的结果
{"id":1,"name": "ciccio"}
但如果我用print\r()
打印变量,我就有了所有对象
\app\models\Struct object
(
[test] => ok
[_attributes:yii\db\BaseActiveRecord:private] => Array
(
[id] => 1
[name] => ciccio
)
)
如果不在数据库表中添加空字段,如何获取变量test
属性?试试以下方法:
保留所有显示内容,然后覆盖getAttributes
public function getAttributes($names = null, $except = [])
{
return array_merge(['test'=>$this->test], parent::getAttributes($names, $except));
}
在您的控制器中,返回如下:return$struct代码>
这样做:return$struct->attributes代码>您可以重写该方法以添加声明为类的公共属性的自定义字段。fields()
方法返回其值已填充到此记录中的列的名称
查看您的代码,您试图在afterFind()
中设置test
属性,并希望在调用Model::find()
方法时针对所有行反映该值。如果正确,则在模型中添加以下内容:
public function fields() {
$fields = parent::fields();
$fields['test'] = 'test';
return $fields;
}
现在,当您调用\common\models\Struct::find()
时,它将返回
{"id":1,"name": "ciccio","test":"ok"}
效验如神非常感谢。
{"id":1,"name": "ciccio","test":"ok"}