我正在创建一个表单。表单的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
的内容时答案 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
应该返回一个模型数组,比如关系。
注意:这可能会影响性能,因为您可能会收到大量的数据库子请求,因为这些记录都是延迟加载的。
**代码未经测试*