thinkphp关联模型as_fields无用解决办法
用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!官方文档就不能写的详细一点吗!!!!