Yii表关联

原创 2013年12月05日 15:40:04

主要为了理清一下思路

首先创建表

  1. alter table sw_xiaodi constraint d_x foreign key(`dage_id`) references `sw_dage`(`id`) #设置外键 也可以在创建表的时候给定
    
    CREATE TABLE `dage` (
       `id` int(11) NOT NULL auto_increment,
       `name` varchar(32) default '',
       PRIMARY KEY  (`id`)
     ) ENGINE=InnoDB DEFAULT CHARSET=latin1
     
     CREATE TABLE `xiaodi` (
       `id` int(11) NOT NULL auto_increment,
       `dage_id` int(11) default NULL,
      `name` varchar(32) default '',
      PRIMARY KEY  (`id`),
      KEY `dage_id` (`dage_id`),
      CONSTRAINT `xiaodi_ibfk_1` FOREIGN KEY (`dage_id`) REFERENCES `dage` (`id`) #创建表的时候给定外键;dage_id是xiaodi的外键,外键对应的键必须是主键
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 

    有一点疑问,发现Yii的表关联做不做外键都能得到最终想要的结果,测试了下只要配置对就OK;目前没发现有什么不足;不过最好还是设置一下为好
  2. 创建对应的model Dage.php与Xiaodi.php
  3. 配置relations:
    //relations的结构如下:
    'VarName'=>array('RelationType', 'ClassName', 'ForeignKey', ...additional options)
    //'varName'这个可以自由定义的,随意给定,但为了一目了然 一般都是给定对应的表名
    //RelationType 四中类型,不多说
    //ClassName 关联model名
    //ForeignKey 外键
    //options 包含的内容就多了 with、on、select等
    //Dage.php
    'xiaodis'=>array(self::HAS_MANY, 'Xiaodi','dage_id'),
    //Xiaodi.php
    'dage'=>array(self::BELONGS_TO, 'Dage','dage_id'),

  4. 配置完成之后,下面就是数据的获取了随便创建一个controller
    public function actionIndex () {
            $dage_model = Dage::model();
    		$all = $dage_model->findAll();
    		foreach($all as $k=>$v){
    			print_r($v);//大哥的信息
                            print_r($v->xiaodis)//大哥对应的小弟信息
    		}
        }
    根据小弟获取大哥的信息同上;
    public function actionIndex () {
            $xiaodi_model = Xiaodi::model();
    		$all = $xiaodi_model->findAll();
    		foreach($all as $k=>$v){
                           print_r($v);//小弟的信息
    			print_r($v->dage);//小弟对应的大哥信息
    		}
        }

  5. 查看好多人讲配置的关系是互配的,刚测试了一下,假如我只需要查大哥还有他下面的小弟信息;而不需要去查小弟 以及相对应的大哥信息,那么在Xiaodi.php中不需要再做映射,获得信息时一样的,不知道会不会在某些其他方面有影响;再研究吧;
  6. 才疏学浅 有错的地方 多请指教

版权声明:本文为博主原创文章,未经博主允许不得转载。

yii2 三表关联查询

原文地址: http://blog.csdn.net/qq_16885135/article/details/54407267 现有 group (组)和 user (用户) 两种实...
  • lmjy102
  • lmjy102
  • 2017年02月23日 14:05
  • 1380

Yii2.0 中间表查询

yii2 中,中间表查询实现,是通过via 与 viaTable实现的。个人认为实现原理是一样的。 前提: user表 id course-enrollment表 course_id, user...
  • cjqh_hao
  • cjqh_hao
  • 2016年01月06日 19:22
  • 1821

Yii 两表如何通过中间表关联查询

由于Yii文档写的确实解释不够,例子有但是参数对应什么没有进行说明举例说明: - lesson表:主键lesson_id - video表:主键video_id - 中间表lesson_vide...
  • u011088792
  • u011088792
  • 2017年08月17日 11:23
  • 295

yii2简述一对一数据表关联

1、建两个表publish:pub_id 和 images:pub_id,image_path; 2、使用gii的crud生成代码 3、在models内Publish.php内写关联函数publ...
  • wojiong132
  • wojiong132
  • 2015年07月13日 20:58
  • 1215

yii数据表关联操作

首先在model中进行表关联 public function relations() { return array_merge(parent::relations(), array( ...
  • xiaojun1288
  • xiaojun1288
  • 2012年03月08日 18:08
  • 1518

Yii2-多表关联查询(with、join、joinwith)示例

表结构 现在有客户表、订单表、图书表、作者表, 客户表Customer   (id  customer_name)订单表Order          (id  order_name       c...
  • xmlife
  • xmlife
  • 2015年06月04日 09:16
  • 1484

yii relations 两表关联查询

原文网址: http://keshion.iteye.com/blog/1607994 一、多表关联的配置   在我们使用 AR 执行关联查询之前,我们需要让 AR 知道一个 AR 类是怎样...
  • poly_sunny
  • poly_sunny
  • 2014年06月08日 01:02
  • 11779

Yii2中多表关联查询hasOne hasMany

表positionContent id position_id content_title content_id is_recommend list_sort update...
  • q601115211
  • q601115211
  • 2017年02月14日 10:35
  • 1789

Yii2 hasOne(), hasMany() 实现三表关联的方法

背景:现有 group (组)和 user (用户) 两种实例。一个 group 中可以拥有多个 user,一个 user 也可以属于有多个 group (多对多关系)GroupUserRelati...
  • qq_16885135
  • qq_16885135
  • 2017年01月13日 12:21
  • 1477

关于Yii1和Yii2的ActiveRecord活动记录对象关联查询时底层调用SQL语句的不同

yii1和yii2通过活动记录类对象关联查询数据库时执行的SQL有比较大的区别,而且如果使用不慎还可能导致查询的数据有错漏的情况出现,甚至可能导致表里面命名很多记录,却发现查询出来的结果是空的,我自己...
  • yaoyuanji
  • yaoyuanji
  • 2015年05月09日 11:27
  • 1487
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Yii表关联
举报原因:
原因补充:

(最多只允许输入30个字)