zoukankan      html  css  js  c++  java
  • THINKPHP_(3)_TP6中实现多层关联,第一个表关联第二个表查询出的数据,再关联第三个表

    问题:

    (1)canxunDanwei数据表对应的模型中有一个关联是:
        public function canxunDanwei()
        {
            return $this->belongsTo('appsystemmodelSchool', 'school_id', 'id');
        }

    即关联school表。

    (2)school表中又有一个关联,关联Category表,是

        // 单位级别数模型关联
        public function  dwJibie()
        {
            return $this->belongsTo('appsystemmodelCategory', 'jibie_id', 'id');
        }

    如何实现多层关联?

    canxunDanwei-》school-》category

    解决方法:

    在canxundanwei数据表对应的模型中,编写查询方法:

            $src = [
                'school_id' => array()
                ,'xueqi_id' => array()
            ];
            $src = array_cover($srcfrom, $src);
            $src['school_id'] = strToArray($src['school_id']);
            $src['xueqi_id'] = strToArray($src['xueqi_id']);
    
            // 查询数据
            $data = $this
                ->when(count($src['school_id']) > 0, function($query) use($src){
                        $query->where('school_id', 'in', $src['school_id']);
                    })
                ->when(count($src['xueqi_id']) > 0, function($query) use($src){
                        $query->where('xueqi_id', 'in', $src['xueqi_id']);
                    })
                ->with(
                    [
                        'canxunDanwei' => function($query){
                            $query
                                ->with(['dwJibie'])
                                ->field('id, title, jiancheng')
                            ;
                        },
                    ]
                )
    //            ->withCount(
    //                [
    //                    'dwTeacher' => function($query){
    //                        $query->where('status', 1);
    //                    }
    //                ]
    //            )
                ->order('id','asc')
                ->select();

    上述代码中,通过两个with可以执行多层关联查询,但是field字段,会限制第二次关联dwJibie的输出。

    目前尝试了各种方法,将关联dwJibie加入到field函数的参数中去,都无济于事。因此,选择去除如下代码:

    ->field('id, title, jiancheng')

    即不限制输出字段。

    即可。

    调试结果:

    (1)浏览器中调试JS的结果。

    (2)PHP中调试结果

    1.第一层关联canxunDanwei

    2.第二层关联

    你永远不知道未来会有什么,做好当下。技术改变世界,欢迎交流。
  • 相关阅读:
    iOS-字符串的连接
    [Win32]Win32 SDK编程系列文章——键盘输入消息
    [置顶] eclipse导入svn下载的项目后无法与服务器的svn项目关联
    iOS-时区 日期处理
    数学之路(3)数据分析(5)
    Filter解决中文乱码问题
    Mac OS X 10.8.3搭建Android工程源码的编译环境(解决找不到GCC、GIT、PYTHON的问题)
    paypal租用
    Java通过内部类实现回调功能
    处理9path图片边缘的小黑点
  • 原文地址:https://www.cnblogs.com/xiaojieshisilang/p/14846178.html
Copyright © 2011-2022 走看看