Учитывая следующие модели:Как эффективно загружать несколько отношений has_many в CodeIgniter DataMapper ORM?
Категория: has_many («шаблон») Шаблон: has_many («тег», «процедура»)
Что является наиболее эффективным способом, чтобы загрузить все объекты, относящиеся ко всем категориям ?
К примеру, я сейчас делаю следующее, но, надеюсь, есть лучший способ:
// 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 запросов на одной конкретной странице.
Есть ли у Datamapper любой тип загружаемой нагрузки? т.е.: Model :: get (array ('include' => array ('tags', 'procedure'))). или include_related методы? – Philip
Да, в форме include_related, но это не работает для has_many, так как гидратация Datamapper в настоящее время не может обрабатывать повторение в результате запроса. – WanWizard
Есть ли более эффективный способ достичь этого? Я имею дело практически с той же ситуацией. Я загружаю около 600 моделей и хотел бы включить связанные модели для каждого из них, поэтому я просматриваю первый список моделей, как и вы, и запускаю 'get()' для каждого из них. Количество запущенных запросов, по-видимому, влияет на доступность памяти на моей машине. Есть ли более эффективный способ сделать это? – flyingL123