我需要基于不是主键的字段创建关系。许多如何做到这一点的例子都是基于一对多和多对多的关系。我尝试了以下建议但没有成功
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
状态的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'),
);
}
任何帮助,将不胜感激。