【发布时间】:2012-02-05 16:55:26
【问题描述】:
我有两个 MySQL 表,subjects 和 books,以及第三个表来定义这两者之间的多对多关系:
CREATE TABLE IF NOT EXISTS `books` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`isbn13` char(13) NOT NULL,
`isbn10` char(10) NOT NULL,
`author` varchar(255) NOT NULL,
`language` varchar(100) NOT NULL,
`edition` smallint(6) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
CREATE TABLE IF NOT EXISTS `books_subjects` (
`subject_id` int(11) NOT NULL,
`book_id` int(11) NOT NULL,
PRIMARY KEY (`subject_id`,`book_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `subjects` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`institution_id` mediumint(9) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
要添加新主题,我使用 ORM 包:
<?php
$subject = Model_Subject::forge(array(
'name' => Input::post('name'),
'institution_id' => Input::post('institution_id'),
));
$subject->save();
?>
我还在 Subject 模型中添加了多对多关系:
protected static $_many_many = array('books');
检索具有分配书籍的主题可以正常工作(我已手动将一些记录添加到 books_subjects 表),但我不知道如何使用 ORM 包添加关系。 关系在这样的数组中(使用 Input::post() 检索):
array(2) {
[0]=>
string(1) "2"
[1]=>
string(1) "3"
}
对于对 FuelPHP 有一定经验的人来说,这应该很容易,但我似乎无法弄清楚...
提前感谢您帮助我!
【问题讨论】:
-
你读过the documentation吗?你有没有尝试过?
-
是的,我尝试了多种方法,但无法正常工作。此外,文档没有解释如何添加多个关系(在本例中为主题)
-
例如,我尝试将这一行添加到 forge 参数数组中:
'books' => new Model_Book(Input::post('books')),和这一行:'books' => Input::post('books'),