0

我有两个 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;
?>

有人可以指出我如何实现这一目标的正确方向吗?

4

2 回答 2

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();

我不知道你是否解决了这个问题,但我希望这个答案有帮助。

于 2010-08-25T22:06:03.463 回答
1

您应该阅读Kohana ORM 指南。它处理一对一、一对多(您的情况)和多对多关系。我没有在这里复制粘贴代码,因为有很多。

于 2010-08-17T22:56:31.377 回答