thinkphp5 模型关联操作练习一(一对多关联查询)

博客分类和博客是一对多的关系,博客和内容是一对一关系

建数据表

CREATE TABLE `cate` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='博客类型';
CREATE TABLE `blog` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(50) NOT NULL DEFAULT '' COMMENT '博客标题',
  `cate_id` int(11) NOT NULL DEFAULT '0' COMMENT '博客类型ID',
  `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '发布人ID',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='博客表';
CREATE TABLE `content` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `blog_id` int(11) NOT NULL DEFAULT '0' COMMENT '博客ID',
  `data` text NOT NULL COMMENT '内容',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='博客内容表';

定义模型

hasMany('Blog')->with('info');
    }
}

hasOne('Content');
    }
}

查询数据

public function cate()
    {
        $cate = collection(model('cate')->with('blog')->select())->toArray();
        dump($cate);
    }

数据查询结果

array(1) {
  [0] => array(3) {
    ["id"] => int(1)
    ["title"] => string(3) "PHP"
    ["blog"] => array(2) {
      [0] => array(5) {
        ["id"] => int(1)
        ["title"] => string(24) "加入一篇博文试试"
        ["cate_id"] => int(1)
        ["user_id"] => int(1)
        ["info"] => array(3) {
          ["id"] => int(1)
          ["blog_id"] => int(1)
          ["data"] => string(24) "加入一条博文内容"
        }
      }
      [1] => array(5) {
        ["id"] => int(2)
        ["title"] => string(24) "加入一篇博文试试"
        ["cate_id"] => int(1)
        ["user_id"] => int(1)
        ["info"] => array(3) {
          ["id"] => int(2)
          ["blog_id"] => int(2)
          ["data"] => string(24) "加入一条博文内容"
        }
      }
    }
  }
}

你可能感兴趣的:(ThinkPHP)