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打印出的数据如下

  • 相关阅读:
    解决安装postgresql安装报An error occurred executing the Microsoft C++ runtime installer.问题
    使用U盘为龙芯笔记本安装操作系统
    年终复盘与展望(2017年)
    年终复盘与展望(2016年)
    Spark log4j 配置
    R语言码农的Scala学习心得
    在集群上运行Spark应用
    通过 Spark R 操作 Hive
    CentOS 6.7 hadoop free版本Spark 1.6安装与使用
    OS X Maven 安装与使用简介
  • 原文地址:https://www.cnblogs.com/clubs/p/8907308.html
Copyright © 2011-2022 走看看