2 つの外部キーを使用してテーブルからフィールドを取得する際に問題があります。
以下の使用表の関係を説明しました。
- ユーザー テーブルhasMany Companies(company_id)。
- Company テーブルには company_id があります。
- 施設hasOne Company_id (ユーザー インスタンスに基づく)。
- エリアには多数の施設 ( facility_id ) があります。
ログオンしているユーザーには、company_id に関連する facility_id に関連する領域があります。
私は今持っています
- 製品ラインには多数の製品 (product_id)があります。
ユーザーは、地域に関連する製品を表示する必要があります。
- 製品ラインには多数のエリア (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)
- Company(primaryKey - company_id)
- Facility(primaryKey - 施設 ID、foreignKey - company_id)
- Areas(primaryKey - area_id,foreignKey-facility_id)
- Productlines(primaryKey - productlines_id、foreignKey - product_id および area_id)
- 製品 (primaryKey - product_id)。
私の期待される結果:
上の表では、area_id 47 に 2 つの product_id (1 と 3) があることがわかります。それらの内部コードは異なります。両方の内部コードを返すようにしたいのですが、今のところ内部コードは 1 つしか取得できません。