【发布时间】:2016-08-09 02:27:15
【问题描述】:
我在使用两个外键从表中获取字段时遇到问题。
解释下面使用表的关系。
- 用户表 hasMany Companies(company_id)。
- 公司表有 company_id。
- 设施hasOne Company_id(基于用户实例)。
- 区域 hasMany 设施(facility_id)。
登录用户将拥有与 facility_id 相关的区域,而该区域又与 company_id 相关。
我现在有一个
- 产品线 hasMany 产品(product_id)。
用户应该展示与区域相关的产品。
- 产品线 hasMany 区域(area_id)。
- 产品线有一个名为 internal_code 的字段。
产品型号与产品线的关系是基于products_id。
我想根据属于特定区域的product_id显示这个内部代码。
到目前为止,我的代码不起作用:
在我的产品模型中。
public function getFacility()
{
return $this->hasMany(Facility::className(),['facility_id' => 'facility_id'])->viaTable('sim_users',['company_id'=> Yii::$app->user->identity->company_id]);
}
public function getArea()
{
return $this->hasMany(Area::className(),['area_id'=>'area_id'])->viaTable('sim_facility',['facility_id'=> 'facility_id' ]);
}
public function getProductlines()
{
return $this->hasMany(Productlines::className(), ['product_id' => 'product_id'])->viaTable('sim_productlines',['product_id' => 'product_id']);
}
在我的视图文件中:
[
'label' => 'Internal Code',
'format' => 'raw',
'value' => function ($data) {
foreach ($data->productlines as $intCode)
return $intCode->internal_code;
}
我不明白如何链接这些关系。寻求帮助。谢谢
表格列表:
- 用户(primaryKey - users_id, foreign_key- comapny_id)
- 公司(primaryKey - company_id)
- Facility(primaryKey - facility_id, foreignKey- company_id)
- 区域(primaryKey - area_id, foreignKey- facility_id)
- Productlines(primaryKey - productlines_id, foreignKey - product_id 和 area_id)
- 产品(primaryKey - product_id)。
我的预期结果:
在上表中您可以看到 area_id 47 有两个 product_id(1 和 3)。并且它们的内部代码是不同的。我希望他们返回两个内部代码,目前我只能得到一个内部代码。
【问题讨论】:
-
不清楚您有哪些实体以及它们如何链接。您能否提供带有主键和外键的完整表列表(仅名称就足够了)?并显示一个预期结果的例子
-
@MaximKorshunov 我已经添加了表名和关系..
标签: yii2 yii2-model