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.第二层关联

    你永远不知道未来会有什么,做好当下。技术改变世界,欢迎交流。
  • 相关阅读:
    mybatis 动态sql
    linux shell 之 crontab(定时任务)详解
    FTP定时批量下载文件(SHELL脚本及使用方法 )
    腾讯云数据库团队:MySQL5.7 JSON实现简单介绍
    Chisel Tutorial(七)——模块
    大数问题解决模板
    可靠的功能測试--Espresso和Dagger2
    hdoj 1698 Just a Hook 【线段树 区间更新】
    平衡二叉树
    WPF中DependencyObject与DependencyProperty的源代码简单剖析
  • 原文地址:https://www.cnblogs.com/xiaojieshisilang/p/14846178.html
Copyright © 2011-2022 走看看