如何在Yii中用逗号分隔的多个ID建立关系

时间:2011-06-27 03:59:08

标签: php mysql database relational-database yii

我正在创建一个表单。表单的Certian字段使用复选框,可能会返回多个选项,我必须将所有这些ID存储到以逗号或分号分隔的单个字段中。

现在我想要的是如何在Yii Framework中建立与该记录的关系。 通常我们使用

'groupName' => array(self::BELONGS_TO, 'Lookup', 'group'),
'p_cpu' => array(self::BELONGS_TO, 'Product', 'cpu'),

但我将如何以下列方式进行

'p_additionalSoftwares' => array(self::BELONGS_TO, 'Product', 'additionalSoftwares'),

当附加软件包含类似2,8

的内容时

1 个答案:

答案 0 :(得分:0)

由于这不是与外键的真正BELONGS_TO关系,因此您无法使用Yii的内置函数。 您可以根据CBaseActiveRelation或CActiveRelation为此案例编写自定义关系,但我没有相关经验,但这可能是最干净的解决方案。

另一种选择是覆盖属性的get处理程序,如*

public function getP_additionalSoftwares(){
  //Use value from database in attributes and split into array with primary keys
  $pks = explode(",",$this->attributes['p_additionalSoftwares']);
  //Query database
  $models = $this->findByPks($pks);
  return $models;
}

在您看来:

$model->p_additionalSoftwares

应该返回一个模型数组,比如关系。

注意:这可能会影响性能,因为您可能会收到大量的数据库子请求,因为这些记录都是延迟加载的。

**代码未经测试*