Thinkphph 使用RelationModel的三表关联查询机制
有如下三个表
a表 b表 c表
id bid other id cid other id other
a表的bid关联b表的id,b表的cid关联c表的id
现在需要查询a表的时候顺带把b表和c表的相关信息也查询出来
很多人一开始就想到使用原生的sql语句
select * from a left join b on a.bid=b.id left join c on b.cid=c.id;
但这并不是我想要的!
直接给出使用案例
class AModel extends RelationModel
{
protected $_link = array(
'B'=>array(
'class_name' => 'B',
'mapping_type' => self::BELONGS_TO,
'mapping_name' => 'b',
'foreign_key' => 'bid',//关联id
),
//c表要间接关联b表
'C' => array(
'class_name' => 'C',
'mapping_type' => self::MANY_TO_MANY,
'mapping_name' => 'c',
'mapping_key' => 'bid', // a.bid, a表要关联b表的字段
'foreign_key' => 'id', // c.id
'relation_foreign_key' => 'cid', // b.cid b表要关联c表的字段
'relation_table' => '__B__', //b表,双下划线加大写,会自动转换统一格式的表,如果多个大写例如BFModel,写成__B_F__中间需要用一个下划线隔开
),
);
Thinkphph 使用RelationModel的三表关联查询机制的更多相关文章
- oracle 三表关联查询
oracle 三表关联查询 CreationTime--2018年7月4日17点52分 Author:Marydon 左连接实现三表关联 表A--------------------------- ...
- oracle 两表关联查询
oracle 两表关联查询 CreationTime--2018年7月4日17点27分 Author:Marydon 情景描述 查询学生表student,sname,sex,age信息及所在班级c ...
- MySQL查询(关联查询)
一.mysql查询与权限 (一)数据库关联查询 **内连接查询(inner join)** 查询两个表共有的数据,交集 SELECT * FROM tb1 INNER JOIN tb2 ON 条件 所 ...
- SQL三表左关联查询
今天在开发的时候遇到了一个需求就是三遍关联查询,表A包含有表B和表C的uid,然后使用left join左关联查询: SELECT c.`uid`, `fromuseruid`, `touseruid ...
- orm 语法 数据库连接、建表、增删改查、回滚、单键关联 、多键关联、三表关联
1.数据库连接, #!usr/bin/env/python # -*- coding:utf-8 -*- # from wangteng import sqlalchemy from sqlalche ...
- 关联查询 join on 和比较运算符 in
join on多表之间的关联查询 写法select 字段 from 表1 t join 表2 s on t.字段1 = s.字段1 where 条件: 也可以这么写select 字段 from 表1 ...
- 通过一个小问题来学习SQL关联查询
原话题: 是关于一个left join的,没有技术难度,但不想清楚不一定能回答出正确答案来: TabA表有三个字段Id,Col1,Col2 且里面有一条数据1,1,2 TabB表有两个字段Id,Col ...
- 学习SQL关联查询
通过一个小问题来学习SQL关联查询 原话题: 是关于一个left join的,没有技术难度,但不想清楚不一定能回答出正确答案来: TabA表有三个字段Id,Col1,Col2 且里面有一条数据1,1, ...
- (一)SQL关联查询的使用技巧 (各种 join)
---恢复内容开始--- (一)SQL关联查询的使用技巧 (各种 join) 这几天因为工作的时候,发现自己的sql语句基础不是很好,特意研究了一下,发现sql语句真的是博大精深,sql语句不仅是要查 ...
随机推荐
- ajax原生
let xml; let url="http://localhost:3333"; let data={name:'lishishi',age:'22'} if(window.XM ...
- MySQL查看、创建和删除索引的方法
本文实例讲述了MySQL查看.创建和删除索引的方法.分享给大家供大家参考.具体如下: 1.索引作用 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别 ...
- stm8 iar开发
1.一份官方库基本是通用的. 2.尽量依托cubex for stm8 依托理由: 1.不同型号,不同后缀的芯片,将会被配置不同的外设.比如stm8s103k3系列可能有的是串口1,但是stm8s10 ...
- iOS NSCache缓存类的了解
前言: 最近面试时,问到了限定并发数的视频下载,当时回答的时通过GCD_barrier 处理,回来想想也可以通过NSCache处理,所以顺便复习一下,这个知识点. 一,关于NSCache说明 说明 ...
- 六、APP开发的主角——UIViewController
MVC框架模式 MVC即model(模型).view(视图)和controller(控制器)的缩写,是一种软件设计模式,专用于含有图形化用户界面的软件设计,自20世纪80年代以来已经有30多年的历史了 ...
- 如何为 SpringMVC 编写单元测试:普通 Controller 测试(转)
前一篇文章我们已经知道如何配置使用了 SpringMVC 测试框架的单元测试. 现在我们就该亲身实践下如何为普通 Controller 编写单元测试了. 接下来一个很明显的问题就是: 什么是普通 Co ...
- SRCNN
SRCNN(超分辨率卷积神经网络) 网络结构 l Conv1: f1 = 9 *9 activation = ‘relu’ l Conv2: f2 = 1 *1 activation = ‘rel ...
- Why Choose MB SD C5 with Engineer Software
MB SD C5 with engineer software performed good and now is released. Unlike the old clone C5 which us ...
- 网页分享到微博、QQ、QQ空间、微信
<ul id="content-share-list" class="bdsharebuttonbox bdshare-button-style0-16" ...
- nodejs笔记之搭建服务器
简单服务器搭建: 1.新建一个文件:app.js 2.加入实现服务器代码: const http = require("http"); http.createServer(func ...