我有两个MySQL表(过度简化):
articles
- id
- description
article_attributes
- article_id
- attribute_name
- attribute_value
因此,每个article
都可以拥有无限量的attributes
。
对于articles
,我有一个Kohana_ORM模型
<?php class Model_Article extends ORM {} ?>
加载模型时,我希望能够访问所有属性。
示例:
<?php
$article = new Model_Article(1); // or ORM::factory('article', 1);
echo $article->description;
echo $article->attribute->foo;
echo $article->attribute->bar;
?>
有人可以指出我正确的方向如何实现这个目标吗?
答案 0 :(得分:4)
我认为你需要创建2个模型,每个表一个,然后定义它们之间的关系。
试试这个,
class Model_Article extends ORM
{
protected $_has_many = array('attributes' => array());
}
class Model_Atribute extends ORM
{
protected $_table_name = 'article_attributes';
protected $_belongs_to = array('article' => array());
}
然后你可以这样做,
$article = ORM::factory('article', 1);
$article_attributes = $article->attributes->find_all();
我不知道你是否解决了这个问题,但我希望这个答案有所帮助。
答案 1 :(得分:1)
您应该阅读Kohana ORM guide。它对待一对一,一对多(你的情况)和多对多的关系。我没有在这里复制粘贴代码,因为有很多。