主キーではないフィールドに基づいてリレーションを作成する必要があります。これを行う方法の例の多くは、1 対多および多対多の関係に基づいています。以下の提案を試してみましたが成功しませんでした
Yii CActiveRecord: 関連データを見つけますが、主キーは使用しません
次のテーブル構造があります。
+------+---------+-----------+
| id | name | status_id |
+------+---------+-----------+
| 1 | service1| 1 |
+------+---------+-----------+
| 2 | service2| 2 |
+------+---------+-----------+
これは私のテーブルactive_serviceです。次の表もあります
+----------+----------+---------------------+-----------+
|id |related_id|related_text | text |
+----------+----------+---------------------+-----------+
|65 |1 |ActiveServices_status| Open |
+----------+----------+---------------------+-----------+
|72 |2 |ActiveServices_status| Active |
+----------+----------+---------------------+-----------+
|102 |3 |ActiveServices_status| Closed |
+----------+----------+---------------------+-----------+
これは私の related_fields テーブルです。このテーブルには、ドロップダウンなどに使用されるすべてのフィールドが含まれていrelated_text
ますrelated_id
。したがって、status_id
active_service テーブルのrelated_id
は、条件が満たされた related_fields テーブルのフィールドに関連しています。つまり、related_text
は ActiveServices_status に設定されています。この関係を作成するにはどうすればよいでしょうか。これは、私がこれまで (ActiveServices モデルで) 行ってきたことの最良の例です。
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'rl_status'=>array(self::BELONGS_TO,'RelatedFields','status_id','condition'=>'related_text = "ActiveServices_status"','on'=>'status_id = related_id'),
);
}
どんな助けでも大歓迎です。