主表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. Final阶段第1周/共1周 Scrum立会报告+燃尽图 06

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2485] 版本控制:https://git.coding.net/liuyy08 ...

  2. 移动端设置, mobile , 一张图片作为背景 ,平铺 ,自动拉伸 , 图片 铺满视界 ,窗口. background-image , background-size, background-repeat

    1.  效果: 浏览器: 手机模拟: 2.代码: <!DOCTYPE html> <html lang="en"> <head> <met ...

  3. Python 再次改进版通过队列实现一个生产者消费者模型

    import time from multiprocessing import Process,Queue #生产者 def producer(q): for i in range(10): time ...

  4. diary of laravel

    1.  修改数据库连接 初始化数据库:   首先: 修改 config- database.php 中的 数据库链接 其次:修改   .env 中数据库链接 创建表: php artisan migr ...

  5. Linux命令--2

    1 mkdir 命令 mkdir 命令用来创建指定名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. (1)命令格式 mkdir [选项] 目录 (2) ...

  6. 【leetcode】26-RemoveDuplicatesfromSortedArray

    problem RemoveDuplicatesfromSortedArray 注意数组为空的情况要首先考虑,并给出返回值: 注意也要同时给出新的数组的数值: 注意数组最后两个元素的处理: class ...

  7. Ubuntu16.04安装OpenCV3.2以及PCL1.8

    最近在学习slam14讲,需要配置一些环境<视觉slam十四讲> 这本书中已经给出如何配置相关环境的比较详细的说明,但是有些环境并无卵用,比如OpenCV以及PCL 这里给出自己屡试不爽的 ...

  8. nginx高并发下配置参数

    今天下午,测试组同事模拟800个用户同时发起请求,nginx开始报错, "Too Many Open Files"  我们使用的是Dell R430服务器,2个物理CPU,每个CP ...

  9. 使用apidoc 生成Restful web Api文档——新手问题与解决方法

    使用apidoc工具来给项目做接口文档,不仅有合理的源码注释,还可以生成对应的文档.是给源码写备注的一个极佳实践. 工具名称:apiDoc Git地址:https://github.com/apido ...

  10. personal的制作

    <style>  .personal{   float: right;   height: 40px;   line-height: 40px;   width: 200px;  }  . ...