按顺序来一步一步走:
第一先建立好数据库:我的数据库是mysql数据库,数据库共分为以下几个表:
users 用户表(刚开始的时候我用的是user表名,由于kohana有喜欢建立model时在后面加复数的习惯,但是估计
user这个名字已经被占用了,指定$_table_name="user"也不行)
posts 帖子
数据库导出代码如下:
-- phpMyAdmin SQL Dump
-- version 3.4.10.1deb1
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2014 年 05 月 16 日 12:28
-- 服务器版本: 5.5.37
-- PHP 版本: 5.3.10-1ubuntu3.11SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";--
-- 数据库: `esystem`
---- --------------------------------------------------------
--
-- 表的结构 `posts`
--CREATE TABLE IF NOT EXISTS `posts` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL,
`label_id` int(10) unsigned NOT NULL,
`title` varchar(255) NOT NULL,
`content` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ;--
-- 转存表中的数据 `posts`
--INSERT INTO `posts` (`id`, `user_id`, `label_id`, `title`, `content`) VALUES
(1, 1, 1, ‘this is first title‘, ‘this is first content‘),
(2, 1, 2, ‘this is 2nd title‘, ‘this is 2nd content‘),
(19, 4, 1, ‘asdfas‘, ‘dasb‘);-- --------------------------------------------------------
--
-- 表的结构 `users`
--CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`u_name` char(20) DEFAULT NULL,
`password` char(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=4 ;--
-- 转存表中的数据 `users`
--INSERT INTO `users` (`id`, `u_name`, `password`) VALUES
(1, ‘root‘, ‘123456‘),
(2, ‘小王‘, ‘123456‘),
(3, ‘lzj‘, ‘1111‘);
用户与帖子是一对多的关系,所有 用户 has many 帖子:
故:
<?php
class Model_User extends ORM {
protected $_has_many = array (
‘Post‘ => array (
‘model‘ => ‘Post‘,
‘foreign_key‘ => ‘id‘
) ,
);
}
<?php
class Model_Post extends ORM {
protected $_belongs_to = array (
‘User‘ => array (
‘model‘ => ‘User‘,
‘foreign_key‘ => ‘user_id‘
),
‘Lable‘ => array (
‘model‘ => ‘Lable‘,
‘foreign_key‘ => ‘label_id‘
)
);
protected $_has_many = array (
‘Comment‘ => array (
‘model‘ => ‘Comment‘,
‘foreign_key‘ => ‘id‘
)
);
}
用法:
$post=ORM::factory("Post")->with("User")->find_all();
该用法是利用 Post下的$_belongs_to属性寻找User对象。
ORM::联表查询