我管理一个联结表来处理 Many to Many
关系 . items
与其 units
之间的关系,其中一个项目可能有一个或多个单位,一个单位可能有一个或多个单位 .
最后,我能够获得以下项目的所有单位数据:
$item = Items::findOne($id);
return Json::encode($item->units);
但是,返回的JSON对象具有当前操作的不必要字段 . 我只需要得到单位的 title
和 id
,但它返回所有单位字段 .
我不知道如何从 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');
}
其中 itemUnits
是联结模型,item_units表 .
2 回答
我从关系声明中找到了更简单的解决方案 . 它在
getUnits
方法中 . 我必须按如下方式添加select
方法:您可以加入相关表并修改连接查询,如下所示