zoukankan      html  css  js  c++  java
  • 关于TP5的一对一、一对多同时存在的关联查询

    主表SQL(tp_member)

    CREATE TABLE `tp_member` (
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
    `username` varchar(50) DEFAULT NULL COMMENT '用户名',
    `password` varchar(50) DEFAULT NULL COMMENT '密码',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

     tp_basic表SQL

    CREATE TABLE `tp_basic` (
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `member_id` mediumint(8) DEFAULT NULL COMMENT 'uid',
    `city` varchar(50) DEFAULT NULL COMMENT '城市',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

    tp_photo表SQL

    CREATE TABLE `tp_photo` (
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `member_id` mediumint(8) DEFAULT NULL,
    `url` varchar(80) DEFAULT NULL COMMENT '链接地址',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

    member 的controller:

    <?php
    namespace appadmincontroller;
    use appadminmodelMember as MemberModel;
    use thinkController;
    use thinkDb;
    use thinkRequest;
    use appadminlogicCeping;
    
    /**
     * 关于TP5的一对一、一对多同时存在的关联查询
     * Class Member
     * @package appadmincontroller
     */
    class Member extends Controller
    {
        public function index()
        {
            $member=new MemberModel();
            //查询一条ID为2的用户数据;toArray()是将结果转为数组。
            $list=$member->with('photo,basic')->find('2')->toArray();
            dump($list);
        }
    }

    member 的MODEL:

    <?php
    namespace appadminmodel;
    use thinkModel;
    
    /**
     * 主表(Member)的模型
     * Class Member
     * @package appadminmodel
     */
    class Member extends Model
    {
        /**
         * 建立和basic的关联
         * hasOne方法的参数包括:hasOne('关联模型名','外键名','主键名',['模型别名定义'],'join类型');
         */
        public function basic()
        {
            return $this->hasOne('Basic','member_id');
        }
    
        /**
         * 建立和photo的关联
         * hasMany方法的参数包括:hasMany('关联模型名','外键名','主键名',['模型别名定义']);
         */
        public function photo()
        {
            return $this->hasMany('Photo','member_id');
        }
    }

    basic 的MODEL:

    <?php
    
    namespace appadminmodel;
    use thinkModel;
    
    /**
     * basic 表模型
     * @package appadminmodel
     */
    class Basic extends Model
    {
        /**
         * 建立和member表(主表)的关联
         * belongsTo的参数包括::belongsTo('关联模型名','外键名','关联表主键名',['模型别名定义'],'join类型');
         */
        public function member()
        {
            return $this->belongsTo('Member');
        }
    }

    photo 的MODEL:

    <?php
    
    namespace appadminmodel;
    use thinkModel;
    
    /**
     * photo 表模型
     * @package appadminmodel
     */
    class Photo extends Model
    {
        /**
         * 建立和member表(主表)的关联
         * belongsTo的参数包括::belongsTo('关联模型名','外键名','关联表主键名',['模型别名定义'],'join类型');
         */
        public function member()
        {
            return $this->belongsTo('Member');
        }
    }

    访问http://localhost/tp_test/public/index.php/admin/Member/index打印出的数据如下

  • 相关阅读:
    记录一次 Linux crontab 执行django 脚本 失败 的经历和解决办法
    python3 使用 django-xadmin 遇到的许多坑
    简要说明 django restframework 的交互式文档
    No application found. Either work inside a view function or push an application context.
    解决Docker容器内访问宿主机MySQL数据库服务器的问题
    《计算机网络自顶向下方法-第七版》第三章总结
    《计算机网络自顶向下方法-第七版》第七章总结
    《计算机网络自顶向下方法-第七版》第二章总结
    《计算机网络自顶向下方法-第七版》第一章总结
    深入理解Docker容器执行引擎runC
  • 原文地址:https://www.cnblogs.com/clubs/p/8907308.html
Copyright © 2011-2022 走看看