主表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 app\admin\controller;
use app\admin\model\Member as MemberModel;
use think\Controller;
use think\Db;
use think\Request;
use app\admin\logic\Ceping; /**
* 关于TP5的一对一、一对多同时存在的关联查询
* Class Member
* @package app\admin\controller
*/
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 app\admin\model;
use think\Model; /**
* 主表(Member)的模型
* Class Member
* @package app\admin\model
*/
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 app\admin\model;
use think\Model; /**
* basic 表模型
* @package app\admin\model
*/
class Basic extends Model
{
/**
* 建立和member表(主表)的关联
* belongsTo的参数包括::belongsTo('关联模型名','外键名','关联表主键名',['模型别名定义'],'join类型');
*/
public function member()
{
return $this->belongsTo('Member');
}
}

photo 的MODEL:

<?php

namespace app\admin\model;
use think\Model; /**
* photo 表模型
* @package app\admin\model
*/
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打印出的数据如下

关于TP5的一对一、一对多同时存在的关联查询的更多相关文章

  1. MyBatis-Plus不写任何resultMap和SQL执行一对一、一对多、多对多关联查询

    对于一对一,一对多的关联查询,Mybatis-Plus官方示例(mybatis-plus-sample-resultmap)在处理时,需要编写查询方法及配置resultMap,并且写SQL. 为了简化 ...

  2. day 69-70 一对一 一对多 多对一联表查询

    day 69 orm操作之表关系,多对多,多对一 多对一/一对多, 多对多{类中的定义方法} day69 1. 昨日内容回顾 1. 单表增删改查 2. 单表查询API 返回QuerySet对象的: 1 ...

  3. mybatis实现多表一对一,一对多,多对多关联查询

    原文:https://blog.csdn.net/m0_37787069/article/details/79247321 1.一对一关键字:association作用:针对pojo对象属性的映射  ...

  4. mybatis 一对多和多对一关联查询

    首先  数据库量表之间字段关系(没有主外键) studentmajor表的id字段对应student表里major字段 两个实体类 package com.model; import java.uti ...

  5. 7.Mybatis关联表查询(这里主要讲的是一对一和一对多的关联查询)

    在Mybatis中的管理表查询这里主要介绍的是一对一和一对多的关联查询的resultMap的管理配置查询,当然你也可以用包装类来实现.不过这里不说,做关联查询的步骤可以简单的总结为以下的几步: 1.分 ...

  6. JPA级联(一对一 一对多 多对多)注解【实际项目中摘取的】并非自己实际应用

    下面把项目中的用户类中有个:一对一  一对多  多对多的注解对应关系列取出来用于学习      说明:项目运行正常 问题类:一对多.一对一.多对多 ============一对多 一方的设置 @One ...

  7. spring data jpa关联查询(一对一、一对多、多对多)

    在实际过往的项目中,常用的查询操作有:1.单表查询,2.一对一查询(主表和详情表)3.一对多查询(一张主表,多张子表)4.多对多查询(如权限控制,用户.角色多对多).做个总结,所以废话不多说. 使用i ...

  8. Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作

    Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: ​ ​ ​  ​ ​ 由于如果只使用一张表存储所有的数据,就会操作数 ...

  9. mybatis 一对一 一对多 多对多

    一对一 一对多 多对多

随机推荐

  1. TransactionScop事务机制的使用

    如果在C#中使用TransactionScope类(分布式事务),则须注意如下事项:1.在项目中引用using System.Transactions命名空间(先要在添加net组件的引用); 2.具体 ...

  2. day 33 线程池有关的

    # cpu 的核心数# import os# print(os.cpu_count()) ## 爬虫的进程和线程的应用# 第一步 虚拟一个浏览器下载 在cmd 里输入 pip install requ ...

  3. day 20 collection模块 time 模块 os 模块

    一.collection模块 1.namedtuple: 生成可以使用名字来访问元素内容的tuple 2.deque: 双端队列,可以快速的从另外一侧追加和推出对象 3.Counter: 计数器,主要 ...

  4. PODOFO编译

    由于LibHaru库只能创建PDF,所以只能换了. PODOFO项目的依赖项目有: FreeType2: https://sourceforge.net/projects/freetype/files ...

  5. django面试五

    http和https的区别https协议需要到ca申请证书,一般免费证书很少,需要交费. 注:CA - certificate authority,身份认证,权威机构认证,CA认证: http是超文本 ...

  6. Java学习笔记28(IO字节流)

    IO定义: 写:Output操作:将内存上的数据持久化 到设备上,这个动作称为输出: 读:Input操作:把硬盘上的东西读取到内存,这个动作称为输入:              这两种操作称为IO流 ...

  7. L2-001. 紧急救援(最短路的变形)*

    L2-001. 紧急救援 #include <cstdio> #include <algorithm> using namespace std; ; int const INF ...

  8. .npy,.mat,.txt转换

    .npy--->.txt:    http://blog.csdn.net/wgf5845201314/article/details/73825785 .npy<->.mat: i ...

  9. [转载] python必碰到的问题---encode与decode,中文乱码

    阅读来源: 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicod ...

  10. 马拉车 o(n)(最长连续回文串) hdu 3068

    #include<bits/stdc++.h> ; using namespace std; +]; string manacher(string ss) { string tt=&quo ...