1

给定以下模型:

类别:has_many('template') 模板:has_many('tag', 'procedure')

加载与所有类别相关的所有对象的最有效方法是什么?

例如,我目前正在执行以下操作,但希望有更好的方法:

// Load all Category objects
$categories = new Category();
$categories->get();

// Load all Template objects related to each Category
foreach($categories as $category)
{
  $category->templates->get();

  // Load all the Tag and Procedure objects related to each template
  foreach($category->templates as $template)
  {
    $template->tags->get();
    $template->procedures->get();
  }
}

现在,这段代码在一个特定页面上执行了 200 多个查询。

4

1 回答 1

0

您可以使用以下

foreach($categories as $category)
    {
        // here you can use the $category object
        foreach($category->templates as $template){
            // here you can use the $template object
            foreach($template->tags as $tags){
                // here you can use the $tags object
            }
            foreach($template->procedures as $proceadures){
                // here you can use the $proceadures object
            }
        }
    }

确保您已激活 datamapper 配置 application/config/datamapper.php 中的自动填充选项,并且您不需要在所有模型上运行 get()

$config['auto_populate_has_many'] = TRUE;
$config['auto_populate_has_one'] = TRUE;

希望能帮助到你!

于 2013-04-18T16:32:47.677 回答