关于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 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的一对一、一对多同时存在的关联查询的更多相关文章
- MyBatis-Plus不写任何resultMap和SQL执行一对一、一对多、多对多关联查询
		对于一对一,一对多的关联查询,Mybatis-Plus官方示例(mybatis-plus-sample-resultmap)在处理时,需要编写查询方法及配置resultMap,并且写SQL. 为了简化 ... 
- day 69-70 一对一 一对多 多对一联表查询
		day 69 orm操作之表关系,多对多,多对一 多对一/一对多, 多对多{类中的定义方法} day69 1. 昨日内容回顾 1. 单表增删改查 2. 单表查询API 返回QuerySet对象的: 1 ... 
- mybatis实现多表一对一,一对多,多对多关联查询
		原文:https://blog.csdn.net/m0_37787069/article/details/79247321 1.一对一关键字:association作用:针对pojo对象属性的映射 ... 
- mybatis 一对多和多对一关联查询
		首先 数据库量表之间字段关系(没有主外键) studentmajor表的id字段对应student表里major字段 两个实体类 package com.model; import java.uti ... 
- 7.Mybatis关联表查询(这里主要讲的是一对一和一对多的关联查询)
		在Mybatis中的管理表查询这里主要介绍的是一对一和一对多的关联查询的resultMap的管理配置查询,当然你也可以用包装类来实现.不过这里不说,做关联查询的步骤可以简单的总结为以下的几步: 1.分 ... 
- JPA级联(一对一 一对多 多对多)注解【实际项目中摘取的】并非自己实际应用
		下面把项目中的用户类中有个:一对一 一对多 多对多的注解对应关系列取出来用于学习 说明:项目运行正常 问题类:一对多.一对一.多对多 ============一对多 一方的设置 @One ... 
- spring data jpa关联查询(一对一、一对多、多对多)
		在实际过往的项目中,常用的查询操作有:1.单表查询,2.一对一查询(主表和详情表)3.一对多查询(一张主表,多张子表)4.多对多查询(如权限控制,用户.角色多对多).做个总结,所以废话不多说. 使用i ... 
- Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作
		Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景:      由于如果只使用一张表存储所有的数据,就会操作数 ... 
- mybatis  一对一  一对多  多对多
		一对一 一对多 多对多 
随机推荐
- Final阶段第1周/共1周 Scrum立会报告+燃尽图 06
			作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2485] 版本控制:https://git.coding.net/liuyy08 ... 
- 移动端设置, mobile ,   一张图片作为背景 ,平铺 ,自动拉伸 ,  图片 铺满视界 ,窗口. background-image ,  background-size,  background-repeat
			1. 效果: 浏览器: 手机模拟: 2.代码: <!DOCTYPE html> <html lang="en"> <head> <met ... 
- Python 再次改进版通过队列实现一个生产者消费者模型
			import time from multiprocessing import Process,Queue #生产者 def producer(q): for i in range(10): time ... 
- diary of laravel
			1. 修改数据库连接 初始化数据库: 首先: 修改 config- database.php 中的 数据库链接 其次:修改 .env 中数据库链接 创建表: php artisan migr ... 
- Linux命令--2
			1 mkdir 命令 mkdir 命令用来创建指定名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. (1)命令格式 mkdir [选项] 目录 (2) ... 
- 【leetcode】26-RemoveDuplicatesfromSortedArray
			problem RemoveDuplicatesfromSortedArray 注意数组为空的情况要首先考虑,并给出返回值: 注意也要同时给出新的数组的数值: 注意数组最后两个元素的处理: class ... 
- Ubuntu16.04安装OpenCV3.2以及PCL1.8
			最近在学习slam14讲,需要配置一些环境<视觉slam十四讲> 这本书中已经给出如何配置相关环境的比较详细的说明,但是有些环境并无卵用,比如OpenCV以及PCL 这里给出自己屡试不爽的 ... 
- nginx高并发下配置参数
			今天下午,测试组同事模拟800个用户同时发起请求,nginx开始报错, "Too Many Open Files" 我们使用的是Dell R430服务器,2个物理CPU,每个CP ... 
- 使用apidoc 生成Restful web Api文档——新手问题与解决方法
			使用apidoc工具来给项目做接口文档,不仅有合理的源码注释,还可以生成对应的文档.是给源码写备注的一个极佳实践. 工具名称:apiDoc Git地址:https://github.com/apido ... 
- personal的制作
			<style> .personal{ float: right; height: 40px; line-height: 40px; width: 200px; } . ... 
