Kohana ORM在模型之间有以下关系:
例如,我有以下定义:
class Model_ORM_Text extends ORM {
protected $_has_one = array(
'compiledData' => array('model' => 'CompiledText', 'foreign_key' => 'idText'),
);
protected $_has_many = array(
'translations' => array('model' => 'TextTranslation', 'foreign_key' => 'idText')
);
protected $_has_many_through = array(
'tags' => array('model' => 'TextTranslation', 'through' => 'rl_text_tags')
);
}
我需要为每个关系创建一个新的相关模型。我只在add
类中找到ORM
方法,允许添加通过has_many_through
关系链接的相关模型,如下所示:
$text->add("tags", $tagId);
但我无法在任何地方找到如何为has_one
和简单has_many
关系添加相关模型。有可能吗?
答案 0 :(得分:1)
问题的关键在于,每个has_many
和has_one
的“其他”方面都是belongs_to
。这是保存信息的模型。
在您的情况下,Model_CompiledText
包含idText
列(在特定别名下)。要(取消)设置关系,您需要操纵此字段。假设您在名称belongs_to
下有一个text
,您就是这样做的:
$compiledText = ORM::factory('CompiledText');
// set text
// Version 1
$compiledText->text = ORM::factory('Text', $specificId);
// Version 2
$compiledText->text = ORM::factory('Text')->where('specificColumn', '=', 'specificValue')
->find();
// unset text
$compiledText->text = null
// save
$compiledText->save();
如果是has_one
,您可以通过父母直接访问它,
$text->compiledData->text = ...;