laravel 强大的关联模型
内容比较多,不总结了,直接看学院君的译文吧,已经写得很详细了
传送门:http://laravelacademy.org/post/6191.html
PS1:
laravel的关联模型并不是遍历一次表查询其的关联数据,例如查询20条记录(分页),并不是先查询出20条记录,再循环20条记录查询其的关联记录,如果是这样的啊,就会浪费大量的数据库连接(查询了1+20次)
那么它是怎么做的呢?
它是先查询这20条数据,然后统计记录的关联外键id,再用in查询关联表(例如 uid in (1,2,3)),再通过算法分配回原来20记录上,这样的话,只需要查询两次就可以了
没看laravel是怎么写的,只是我的猜测,下面是我之前优化后台订单查询时做的操作(那时候我还没学laravel,自己想的哈哈)
传送门:http://www.cnblogs.com/tujia/p/6043113.html
PS2:
当然,上面说的只是laravel关系模型中的一小部分功能(一对一)(讨论是直接联表好,先查一张表,再循环处理其他关联表比较好),laravel的关系模型非常多(一对多,多对多,远层一对多,多态关联,多对多多态关联等等),还能对关系模型添加约束查询,真的非常强大,有需要的多看一下文档吧,文档已经写得很详细了!传送门:http://laravelacademy.org/post/6191.html
laravel 强大的关联模型的更多相关文章
- Laravel关联模型中has和with区别
本篇文章给大家带来的内容是关于Laravel关联模型中has和with区别(详细介绍),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 首先看代码: 1 2 3 4 5 6 $user ...
- laravel中如何在模型中自关联?
https://segmentfault.com/q/1010000007926567 在模型中声明一对多的关系,关联表本身.parent_id对应父记录的id.我在sof中查阅到很多这样的写法: p ...
- Laravel5.1 关联模型之后操作
之前写过关于模型关联的笔记,但是模型关联好后的一些使用没有介绍,今天补上 1 写入关联模型 1.1 使用Save方法(一对多) 我们准备了两个模型:Post和Comment. 它们的关系是一对多关系. ...
- ThinkPHP 3.2.3 关联模型的使用
关于关联模型 ThinkPHP 3.2.3 的关联模型(手册地址)一般处理关联数据表的 CURD 操作,例如关联读取.关联写入.关联删除等. 实例 博客管理模块关于博客有 4 张数据表:博客表 crm ...
- thinkphp 关联模型配置代码
<?php /** * 公司与部门关联模型 */ class CompanyRelationModel extends RelationModel{ //主表名称 protected $tabl ...
- ThinkPHP 学习笔记 ( 四 ) 数据库操作之关联模型 ( RelationMondel ) 和高级模型 ( AdvModel )
一.关联模型 ( RelationMondel ) 1.数据查询 ① HAS_ONE 查询 创建两张数据表评论表和文章表: tpk_comment , tpk_article .评论和文章的对应关系为 ...
- ThinkPHP 关联模型中查询某条记录的父级(非查询子级)
数据表 id cat_name cat_pid 76 手机.数码 0 84 手机配件 76 86 蓝牙耳机 84 从属关 ...
- ThinkPHP第十五天(setField、setInc、setDec、关联模型)
1.ThinkPHP中的比较特殊连贯操作 如果要更新某个字段可以用setField方法,比如M('user')->where('id=1')->setField('username','T ...
- ThinkPHP第十四天(显示TRACE界面配置,关联模型详解定义)
1.显示TRACE界面,首选需要在显示模版界面,$this->display(),然后需要在配置文件中配置 SHOW_PAGE_TRACE => true 2.关联模型使用 主表以user ...
随机推荐
- 【转载】LeetCode 题目总结/分类
引自:http://www.douban.com/note/330562764/ 注:此分类仅供大概参考,没有精雕细琢.有不同意见欢迎评论~ 利用堆栈:http://oj.leetcode.com/p ...
- asp.net显示用户信息
web.config <?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配置 ASP.NET 应 ...
- ThreadStart中如何带参数
1.ThreadStart 线程执行带参数的方法,new Thread(new ThreadStart(delegate { ThreadTask(firstPage, lastPage); })); ...
- uart 超声波传感器数据读取
传感器选择 淘宝上搜索 US-100 , 价格大概在17块人民币左右. 读取数据的代码如下: // include/aplex_tty.h #ifndef _APLEX_TTY_H__ #define ...
- HTTP小结
http 一.HTTP协议简介 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交 ...
- java-基于Servlet3.0的文件上传
Servlet3.0学习总结(三)——基于Servlet3.0的文件上传 在Servlet3.0中使用request.getParts()获取上传文件
- android tab之间滑动切换界面功能
1. onTouchListener(); //捕捉touch事件,比如说onDown 需要将可滑动的控件加上两个方法:(1)view.setOnTouch ...
- 在Mac下结合Xcode搭建Cocos2d-X开发环境!
第一步:下载cocos2d-X的引擎包,上面已经给出地址了: http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Download 第二步:启动终端:(点 ...
- Java并发编程基础
Java并发编程基础 1. 并发 1.1. 什么是并发? 并发是一种能并行运行多个程序或并行运行一个程序中多个部分的能力.如果程序中一个耗时的任务能以异步或并行的方式运行,那么整个程序的吞吐量和可交互 ...
- 10个最佳的触控手式的JavaScript框架(转)
由于各种原因移动开发是一项艰难的工作,比如它是非常耗时的.充满压力的任务.最重要的是,作为一个开发人员,你必须保持更新所有最新 的技术和技巧——你必须知道所有最新的趋势,问题和解决方案等.例如跨浏览器 ...