FuelPHP与多个外键的关系

时间:2013-06-10 08:17:54

标签: orm fuelphp

我刚开始在我的应用程序中使用FuelPHP并且已经堆叠在orm关系设置中。 我有以下3个表,并希望使用项目模型显示具有部门用户名的项目列表。 但我无法弄清楚如何与orm关系建立关系。

你如何使用$ _belongs_to,$ _has_one,$ _has_many或$ _many_many这个关系?

我想做的就像sql一样     “从项目中选择*,departments.name,users.name     在projects.department_id = department.id上加入了部门     在projects.user_id = users.id“

上加入用户
### TABLE projects ###
CREATE TABLE IF NOT EXISTS `projects` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`department_id` int(11) unsigned NOT NULL,
`user_id` int(11) unsigned NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
`deleted_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `department_id` (`department_id`),
KEY `user_id` (`user_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

ALTER TABLE `projects`
ADD CONSTRAINT `m_project_ibfk_1` FOREIGN KEY (`department_id`) REFERENCES `departments` (`id`),
ADD CONSTRAINT `m_project_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`);

### TABLE departments ###
CREATE TABLE IF NOT EXISTS `departments` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
`deleted_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

### TABLE users ###
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`login_id` varchar(100) NOT NULL,
`nickname` varchar(20) NOT NULL,
`password` varchar(255) NOT NULL,
`last_login_at` timestamp NULL DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
`deleted_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

提前致谢。

1 个答案:

答案 0 :(得分:3)

最容易记住:

多对多关系在两个模型中都使用$_many_many,并且需要关系表(也称为连接表或联结表)。

对于所有其他人,一方是$_has_one$_has_many,另一方是$_belongs_to。包含外键的模型始终为$_belongs_to

在这个例子中: *用户has_many项目,项目belongs_to用户 *部门has_many项目,项目belongs_to部门