自动加载关联的行

时间:2012-03-22 20:30:11

标签: kohana kohana-3 kohana-orm

我有一个简单的发布系统,可以在博客帖子中添加特殊字段(如wordpress中的custom fields)。这是我的模特:

<?php
# Node.php
class Model_Node extends ORM
{
    protected $_belongs_to = array('category' => array());
    protected $_has_one    = array('path' => array());
    protected $_has_many   = array('fields' => array());
    (...)
}

# Field.php
class Model_Field extends ORM
{
    protected $_belongs_to = array('node' => array());
    (...)
}
?>

目前,当我使用Node加载factory()模型时,我无法直接访问与Fields关联的Node;我需要使用$node->fields->find_all()。我想知道 - 从数据库查询Node时是否有可能自动加载相关字段?

假设我想以这种方式使用它:

<?php
$node = ORM::factory('node');
$nodes = $node->find(1);

// as you can see, i don't want to use separated query for getting `fields`.
foreach( $node->fields as $field )
{
  echo $field->content;
}
?>

我已经看到我可以使用$_load_with模型属性或->with('fields')但这两个解决方案返回空结果。你有什么建议吗? :)提前致谢!

1 个答案:

答案 0 :(得分:0)

以下是我的find()扩展程序的更新:http://pastebin.com/T5dsyNPw。没有测试过,但它应该工作。