$result=M()->table(array('auth_rule_group'=>'rule_group','auth_rule'=>'rule'))->where('rule_group.id=rule.group_id')->find();就改写了一下thinkphp的model文件public function table($table) {
$prefix = $this->tablePrefix;
if(is_array($table)) {
/*数组添加表前缀*/
foreach ($table as $key => $value) {
$table[C('DB_PREFIX').$key]=$value;
unset($table[$key]);
}
$this->options['table'] = $table;
}elseif(!empty($table)) {
//将__TABLE_NAME__替换成带前缀的表名
$table = preg_replace_callback("/__([A-Z0-9_-]+)__/sU", function($match) use($prefix){ return $prefix.strtolower($match[1]);}, $table);
$this->options['table'] = $table;
}
return $this;
}不知道是不是最好的写法呢? 反正解决了问题! 希望下个版本THINKPHP能改进下!
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。