在Yii2 ActiveQuery中,只创建一个只包含相关对象的查询?

时间:2016-12-13 04:58:42

标签: php yii yii2

我有一个名为ActiveModel的{​​{1}}类,它将UserActivity返回到相关的ActiveQuery表。

我想返回一个User,其中的查询列出这些用户,已过滤ActiveDataProvider查询的条件。

我的UserActivity课程看起来有点像这样:

UserActivity

我在Yii2 REST API中返回class UserActivity extends ActiveRecord { ... public function getUser(){ return $this->hasOne(User::className(),["id"=>"id_user"]); } ... } (因为它是自动分页),我可以像这样返回ActiveDataProvider动作的查询:

GetLikingUsers

...但是这会返回... public function run($type){ return new ActiveDataProvider([ 'query' => UserActivity::find()->where(["type"=>$type]), ]); } ... 类型的对象,我不希望通过API公开这些对象。我宁愿只发送匹配的用户,例如:

UserActivity

但当然这不起作用。我知道我可以在查询上使用... public function run($type){ return new ActiveDataProvider([ 'query' => UserActivity::find()->where(["type"=>$type])->getUser(), ]); } ... 加急加载,我可以将其与with("user")一起发送,但我的问题是我不希望API使用者知道UserActivity是什么类型是,他们应该只关注UserActivity类型。

我喜欢使用ActiveQuery,到目前为止,我的API已经很好地形成了,但我仍然坚持这个。

0 个答案:

没有答案