用tp不是很多,最近自己的一个小东西准备用tp开发,于是仔细看了文档,才发现以前的各种left join什么的用thinkphp关联模型方便很多,于是便研究了下,结果发现关联模型中的as_fields设置后无效,文档又写得比较简单,google了下很久,最后终于发现了解决办法.记录下.

假设有以下数据表:

User表:

---------------------------------
| id |  username  |  pwd  | did |
---------------------------------
| 1  |    apple   | 12345 |  1  |
---------------------------------
| 2  |   banana   | 13579 |  2  |
---------------------------------

department表

 -------------
| id  | name  |
 -------------
|  1  | 市场部 |
 -------------
|  2  | 开发部 |
 -------------

然后我在UserModule.class.php里面这样写:

<?php
class UserModel extends RelationModel{
    protected $_link=array{
        'department'=array(
                'mapping_type'=>BELONGS_TO,
                'class_name'=>'department',
                'mapping_name'=>'department',
                'foreign_key'=>'did',
                'condition'=>'id',
                'mapping_fields'=>'id,name',
                'as_fields'=>'dep_id,dep_name'    
}

结果输出的结果集dep_id和dep_name都为空.怪哉,我把as_fields给注释掉就正常,但是是一个department的二维数组,有着强迫症的我绝对不能容忍.最后发现,丫的文档没说清楚,as_fields的值必须得为id,name才行,可是完美主义,再说了我的user表里面有id字段,这不坑爹吗.最后发现如果一定要写成dep_id,dep_name形式,得把"as_field"改为这样id:dep_id,name:dep_name.运行,bingo!官方文档就不能写的详细一点吗!!!!