thinkphp3.2.3 视图模型,这是BUG吗?

浏览:522 发布日期:2018/07/23 分类:求助交流 关键字: 视图模型
注意:是个BUG吗???,三个表进行关联时,统计COUNT(Usermsgs.msg)'=>'count',显示6,但生成的SQL语句完全正确,无语中.....

附上SQL测试库://模型中代码==============================================
namespace Home\Model;
use Think\Model\ViewModel;
class MemberViewModel extends ViewModel{
    protected $viewFields = array(
        'Member'=>array('uid','uname','email','_type'=>'LEFT'),//默认用join,加上条件后成left join
        'Usercard'=>array('code','_on'=>'Member.uid = Usercard.uid','_type'=>'LEFT'),//如果不加条件就是笛卡尔乘积
        //发现一个BUG,如果只用:Member与Usermsgs表进行关联,则结果是正确的,如果三表连接,SQL语句没问题,在SQL查询器是查询OK,但返回结果错了,用户uid=1的留言数显示6条,实际只有3条.
        'Usermsgs'=>array('msg','ctime','_on'=>'Member.uid = Usermsgs.uid','COUNT(Usermsgs.msg)'=>'count'),//它如果有多条留言,则会出现多条数据,如果我们只要首条,则查询时加上->group('uid'),还可以进行留言条数统计
    );
}
//控制器中代码===========================================
namespace Home\Controller;
use Think\Controller;

header('content-type:text/html;charset=utf-8');
class IndexController extends Controller {
    public function index(){
        //$user = D('MemberView');
        //$arr = $user->group('uid')->select();//注意模型中三表关联,结果统计uid=1的用户留言数是6,但下面SQL语句也是它生成的,在SQL查询分析器中得到结果是3,用它query()方法执行SQL语句也是3,无语啊......
        $user= D('Member');
        $arr = $user->query('SELECT Member.uid AS uid,Member.uname AS uname,Member.email AS email,Usermsgs.msg AS msg,Usermsgs.ctime AS ctime,COUNT(Usermsgs.msg) AS count FROM think_member Member LEFT JOIN think_usermsgs Usermsgs ON Member.uid = Usermsgs.uid GROUP BY Member.uid');
        print_r($arr);
    }
}

附件 thinkphp32.zip ( 1.77 KB 下载:1 次 )

最佳答案
评论( 相关
后面还有条评论,点击查看>>