FuelPHP:添加多个许多一对多的关系
问题描述:
我有两个MySQL表,科目和书籍,以及第三个表来定义这两者之间的许多一对多的关系:FuelPHP:添加多个许多一对多的关系
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();
?>
我还增加了许多一对多的关系,以主题模式:
protected static $_many_many = array('books');
使用分配的书籍检索主题可以正常工作(我已经手动向books_subjects表格添加了一些记录),但是我不知道如何使用ORM软件包添加关系。 的关系是这样的一个数组(通过使用输入检索::后()):
array(2) {
[0]=>
string(1) "2"
[1]=>
string(1) "3"
}
对于有人用FuelPHP一些经验,这应该是很容易的,但我不能似乎弄明白...
在此先感谢帮助我!
答
尝试
<?php
$subject = Model_Subject::forge(array(
'name' => Input::post('name'),
'institution_id' => Input::post('institution_id'),
));
$subject->save();
foreach (Input::post('books') as $book_id) {
$subject->books[] = Model_Book::find($book_id);
}
$subject->save();
?>
+0
除了第一个$ subject-> save()是不必要的,它完美的工作,谢谢! – Jeroen 2012-02-06 15:37:35
你阅读[文件](http://docs.fuelphp.com/packages/orm/relations/many_many.html)?你尝试过什么吗? – Furgas 2012-02-05 17:14:17
是的,我尝试了很多东西,无法让它工作。另外,文档没有解释如何添加多个关系(本例中的书籍) – Jeroen 2012-02-05 18:57:59
例如,我尝试将这一行添加到伪造参数数组中:''books'=> new Model_Book(Input :: post ('books')),'和这一个:''books'=> Input :: post('books'),' – Jeroen 2012-02-05 19:15:37