首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Yii,多个MANY_MANY关系

Yii,多个MANY_MANY关系
EN

Stack Overflow用户
提问于 2012-02-17 15:32:23
回答 1查看 700关注 0票数 0

好的,我有两个模型:

1: pv_array (光伏阵列) 2:模块(光伏模块)

两者之间存在MANY_MANY关系:

代码语言:javascript
运行
复制
        return array(           
                'modules' => array(self::MANY_MANY, 'module', 'module_to_array(array_id, module_id)'),
        );

        return array(
                'arrays' => array(self::MANY_MANY, 'pv_array', 'module_to_array(module_id, array_id)'),
        );

问题是,当我向数组中添加模块时,我需要能够将同一模块的多个实例添加到一个数组中……我可以这样做,没有问题,当我检查数据库表module_to_array时,有多个条目存在。

尽管当我现在访问数组中的模块时,如下所示:

代码语言:javascript
运行
复制
$pv_array = pv_array::model()->findByPk( 2 );
echo count( $pv_array->modules);

它只计算模块的单个实例,而不是模块的多个实例...??

例如,如果我将3 x ModuleXYZ和2 x ModuleABC添加到Array1,我将只得到以下内容

代码语言:javascript
运行
复制
echo count( $Array1->modules ); // would echo 2

我希望它回显5的位置

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-18 13:34:08

经过大约4个小时的努力,我找到了这个问题的最佳解决方案……只需使用一个神奇的方法手动处理此关系

首先将relation

  • create注释掉,这是一个与属性相同的神奇属性,例如

var $_modules =();var

  • 使用神奇的get方法和dbcriteria手动构建查询

公共函数getModules() { $criteria = new CDbCriteria;$criteria->join = 'LEFT JOIN component_to_array ON component_to_array.array_id =‘.$this->ON.’AND t.id = component_to_array.component_id';$criteria->condition = 'component_to_array.array_id = '.$this->id.'';return component::model()->findAll($criteria);}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9324506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档