Yii2 从相关的多对多相关模型中选择某些字段

Sai*_*akR 3 activerecord many-to-many yii2

我管理一个连接表来处理Many to Many关系。items和 it之间的关系,units其中一项可以具有一个或多个单元,并且一个单元可以具有一个或多个单元。

最后,我能够获取某个项目的所有单位数据,例如:

$item = Items::findOne($id);    
return Json::encode($item->units);
Run Code Online (Sandbox Code Playgroud)

但是,返回的 JSON 对象包含当前操作不需要的字段。我只需要获取单位的titleid,但它返回所有单位字段。

我不知道如何从Items模型中的关系设置中调整它。以下是 Items 模型中的关系声明:

public function getItemUnits()
    {
        return $this->hasMany(ItemUnits::className(), ['item_id' => 'id']);
    }

    public function getUnits()
    {
      return $this->hasMany(Units::className(), ['id'=> 'unit_id'])->via('itemUnits');
    }
Run Code Online (Sandbox Code Playgroud)

哪里itemUnits是连接模型item_units table

Sai*_*akR 6

我从关系声明中找到了更简单的解决方案。这是在getUnits方法中。我必须select向其添加方法,如下所示:

public function getUnits()
    {
      return $this->hasMany(Units::className(), ['id'=> 'unit_id'])->select(['id','title'])->via('itemUnits');
}
Run Code Online (Sandbox Code Playgroud)