ORM关联查询

a.一对多
  针对外键来说 谁属于谁 谁有谁

    user表
CREATE TABLE `user` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30) DEFAULT NULL,
`state` tinyint(1) DEFAULT '0',
PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8 article表
CREATE TABLE `article` (
`article_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL,
`comment` varchar(400) CHARACTER SET latin1 DEFAULT NULL,
PRIMARY KEY (`article_id`),
KEY `uid` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8

  #user表 与 article 表为一对多关系 需要在模型中建立映射模型

  

              article的Model层:
//article表外键uid属于user表的主键 -谁属于谁
static $belongs_to = array(array('user')); user的Model层:
//user表有个article的外键uid 谁有谁
static $has_one = array(array('article','foreign_key'=>'uid'));

  ##查询user表主键为1-5的集合 同时查询出 user 所对应的文章内容

    

$users = User::find_by_sql('select * from `user` inner join `article` on(`user`.uid=`article`.uid)   where `user`.uid in(12,13,15,16,18)');

foreach($users as $user)
{
echo '序号:'.$user->uid.' 姓名:'.$user->name.' 文章内容:'.$user->article->comment.' <br />';
}

  

#关联查询的一些小问题

##有些问题 的代码

  $users = User::all();
  foreach($users as $user)
  {
    echo '姓名:'.$user->name.' 状态:'.$user->state.' 文章:'.$user->article->comment.'<br />';
  }

然后直接遍历 遍历时关联ORM模型 article
这时候发现 出来的数据不完整 关联表article中同一外键的多条记录只显示一条

查了很多资料没出来
就想着用下join吧 用join查询的话 这时候数据就完整了

$users = User::all(
  array('joins' => array('article'))
);

  #关联插入

$user = User::create(array('name' => 'goto', 'state' => 1));

$user->create_article(array('comment'=>'m a dog'));

  

PHPActiveRecord 学习二的更多相关文章

  1. emberjs学习二(ember-data和localstorage_adapter)

    emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...

  2. ReactJS入门学习二

    ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...

  3. TweenMax动画库学习(二)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

  4. Hbase深入学习(二) 安装hbase

    Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...

  5. Struts2框架学习(二) Action

    Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...

  6. Python学习二:词典基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...

  7. Quartz学习--二 Hello Quartz! 和源码分析

    Quartz学习--二  Hello Quartz! 和源码分析 三.  Hello Quartz! 我会跟着 第一章 6.2 的图来 进行同步代码编写 简单入门示例: 创建一个新的java普通工程 ...

  8. SpringCloud学习(二):微服务入门实战项目搭建

    一.开始使用Spring Cloud实战微服务 1.SpringCloud是什么? 云计算的解决方案?不是 SpringCloud是一个在SpringBoot的基础上构建的一个快速构建分布式系统的工具 ...

  9. DjangoRestFramework学习二之序列化组件、视图组件 serializer modelserializer

      DjangoRestFramework学习二之序列化组件.视图组件   本节目录 一 序列化组件 二 视图组件 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 序列化组 ...

随机推荐

  1. 学习excel的使用技巧一空格替换为0

    问题1  把excel表格中的空格  填充为0 方法1 选中CDE列    CRTL+F 查找空 替换为0 方法2 选中CDE列 CRTL+G 打开定位  点击条件定位  选择空值 点击确定  然后在 ...

  2. 14.纯 CSS 创作一种侧立图书的特效

    原文地址:https://segmentfault.com/a/1190000014751037 HTML代码: <div class="books"> <div ...

  3. 《算法》BEYOND 部分程序 part 3

    ▶ 书中第六章部分程序,加上自己补充的代码,包括 Graham 扫描生成凸包,计算最远点对 ● Graham 扫描生成凸包 package package01; import java.util.Ar ...

  4. Docker 初学

    据我理解, 它最大的用途是 将我们的应用及环境整个打包, 这样如果我们的开发环境环境部署了,就不用再分别去测试/ 生产环境部署了! -- 但是, 新问题在于, 拷贝这些东西比较麻烦... Docker ...

  5. SRM-供应商关系管理-组织模式

    https://wiki.scn.sap.com/wiki/display/SRM/PPOMA_BBP 供应商关系管理 ... 组织模式 PPOMA_BBP     跳到元数据结束   由Ivy Li ...

  6. 健康检测文件httpchk.jsp

    静态显示: <html><body><center> Now time is: <%=new java.util.Date()%> </cente ...

  7. data型怎么转换格式

    data型如何转换格式01-1月   -03       如何转成   YYYY-MM-DD   的格式 本来就是date了 ------解决方案--------------------to_char ...

  8. mac下node安装提示command not found

    官网下载了node的.pkg文件安装node,安装好后,在mac终端下输入npm -v 和 node -v均提示 command not found,参考了网上的方法,终于得解 第一步:创建.bash ...

  9. CrazySNS has on line - And you'll see why 1984 won't be like "1984."

    On May 10th, CrazySNS has on line , And you will see why 1984 won’t be like "1984."

  10. ie11 调试工具不能使用

    使用ie11仿真ie8测试兼容性的时候,方便调试 dom和仿真都不能用 搜索 https://www.ludou.org/win7-ie-11-f12-bug.html也有相关问题 安装补丁 64位的 ...