zoukankan      html  css  js  c++  java
  • PHPActiveRecord 学习二

    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'));
    

      

  • 相关阅读:
    堆栈学习
    需要阅读的书籍
    Rust Book Lang Ch.19 Fully Qualified Syntax, Supertraits, Newtype Pattern, type aliases, never type, dynamic sized type
    Rust Lang Book Ch.19 Placeholder type, Default generic type parameter, operator overloading
    Rust Lang Book Ch.19 Unsafe
    Rust Lang Book Ch.18 Patterns and Matching
    Rust Lang Book Ch.17 OOP
    Rust Lang Book Ch.16 Concurrency
    Rust Lang Book Ch.15 Smart Pointers
    HDU3966-Aragorn's Story-树链剖分-点权
  • 原文地址:https://www.cnblogs.com/foreversun/p/6831760.html
Copyright © 2011-2022 走看看