thinkphp5 모델 관련 조작 연습 1 (한 쌍의 다중 관련 조회)

2656 단어 ThinkPHP
블로그 분류와 블로그는 일대일 관계이고 블로그와 내용은 일대일 관계이다
데이터 테이블 작성
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) "        "
        }
      }
    }
  }
}

좋은 웹페이지 즐겨찾기