Shadow33 Asked:2020-04-27 21:20:45 +0000 UTC2020-04-27 21:20:45 +0000 UTC 2020-04-27 21:20:45 +0000 UTC 将属性添加到 ActiveRecord 响应 Yii2 772 我有一个包含列的表firstname lastname。请求时如何Users::find()->all();在响应中获取另一列fullname。 php 2 个回答 Voted Best Answer Алексей Шиманский 2020-04-27T23:02:03Z2020-04-27T23:02:03Z 如果我没记错的话,User向模型添加一个吸气剂就足够了: public function getFullName() { return $this->firstname . ' ' . $this->lastname; } 然后当作为属性访问时它也将可用,例如: $model->fullName 如果你希望属性在操作后可用find,那么Yii2有afterFind方法,在AR请求执行完填充数据后执行。因此,在模型中,您可以添加: public function afterFind() { $this->fullName = $this->firstname . ' ' . $this->lastname;; } 同时,一定不要忘记在模型中添加相应的字段: public $fullName; KiTE 2020-04-29T16:41:32Z2020-04-29T16:41:32Z 事实证明,该字段应该通过 rest-controller 显示。 为此,您需要重写该方法User::fields(),例如,最简单的方法: public function fields() { $fields = parent::fields(); $fields['fullname'] = function () { return $this->firstname . ' ' . $this->lastname; }; return $fields; } 文档中的更多详细信息。
如果我没记错的话,
User
向模型添加一个吸气剂就足够了:然后当作为属性访问时它也将可用,例如:
如果你希望属性在操作后可用
find
,那么Yii2有afterFind方法,在AR请求执行完填充数据后执行。因此,在模型中,您可以添加:同时,一定不要忘记在模型中添加相应的字段:
事实证明,该字段应该通过 rest-controller 显示。
为此,您需要重写该方法
User::fields()
,例如,最简单的方法:文档中的更多详细信息。