多表关联时,关联条件和字段 不用输入表全名的做法。

浏览:762 发布日期:2013/02/26 分类:技术分享 关键字: 多表关联 多表字段
表lang_A字段:id,user_id,add_time
表lang_B字段:id,user_id,add_time

表的前缀统一为:lang_
如果要A表关联B表,是不是这样:
$u = M('A');
$u->field('lang_A.user_id,lang_B.user_id')->join("lang_B on lang_A.user_id=lang_B.user_id")->find();

如果表的前缀是统一的,可变的,那上面的写法将不通用了,配置中设置了DB_PREFIX也就没有起到作用了。。
我的做法是在field,join中,加入:
$field = str_replace('@.',C('DB_PREFIX'),$field);
把@.解析为表的前缀,那么上面的语句可以修改为:
$u->field('@.A.user_id,@.B.user_id')->join("@.B on @.A.user_id=@.B.user_id")->find();
我感觉这样才是TP的精神,不知道这是不是可以优化一下?
最佳答案
评论( 相关
后面还有条评论,点击查看>>