关联表中字段查询功能增强

浏览:881 发布日期:2010/05/15
- 普通 - 未处理
thinkphp的关联查询功能还是很方便的,但有一个不爽之处:当多对多关联(MANY_TO_MANY)的时候,关联表中可能有一些附加属性(比如用户和小组的多对多关联,关联表里可能有一个“用户身份”标明这个用户是小组长还是其他用户)。这个附加属性现有的thinkphp版本无法选择出来。
其实添加这个功能很简单,只需要把RelationModel.php的第205行由
$sql = "SELECT b.{$mappingFields} FROM {$mappingRelationTable} AS a, ".$model->getTableName()." AS b WHERE a.{$mappingRelationFk} = b.{$model->getPk()} AND a.{$mappingCondition}"

改成
$sql = "SELECT a.*,b.{$mappingFields} FROM {$mappingRelationTable} AS a, ".$model->getTableName()." AS b WHERE a.{$mappingRelationFk} = b.{$model->getPk()} AND a.{$mappingCondition}"

就可以了。当然我这里有一个隐患,可能字段的名字出现冲突,不过这也是可以解决的。
评论(
后面还有条评论,点击查看>>