在很多时候,我需要使用sql语句,这样就会使用到类似__TABLENAME__样的表名称,但打字起来并不顺手,我希望简便一些,借鉴了他人的处理方式,使用##__代替表前缀,清晰可辨,书写简易。
例如:
$sql = "SELECT * FROM ##__tablename WHERE cat_id=100";
解析后的$sql为:
"SELECT * FROM shop_tablename WHERE cat_id=100";
要做到这样的效果,需要变化两个地方:
1.在ThinkPHP/Library/Think/Model.class.php的 1417 行附近,
把:
$sql = strtr($sql,array('__TABLE__'=>$this->getTableName(),'__PREFIX__'=>$this->tablePrefix));
修改为:
//$sql = strtr($sql,array('__TABLE__'=>$this->getTableName(),'__PREFIX__'=>$this->tablePrefix));
$sql = strtr($sql,array('__TABLE__'=>$this->getTableName(),'__PREFIX__'=>$this->tablePrefix, C('SQL_REPLACE')=>$this->tablePrefix)); //添加##__替换表前缀
2.在数据库配置中,加上一句:
'SQL_REPLACE' => '##__', //替换表前缀
3.删除Runtime缓存后,就可以使用了。