Я пытаюсь ускорить свое приложение и играю с предварительной выборкой в предварительной выборке DBIC.
у меня следующие отношения
Устройство имеет отношение «многие ко многим» с объектом (существует помощник отношения, который называется «device_has_objects»).
Объект принадлежит сети.
Я пытаюсь минимизировать количество обращений к БД. Следующее, кажется, работает
$self—>db->ResultSet(‘Object’)->search({},
{ prefetch => { device_has_objects => 'device' , 'network' }}
);
Но я получаю эту ошибку,
«Нечетное количество элементов в анонимном хеше»
Хотя SQL, который он генерирует, выглядит нормально.
SELECT me.objectid, me.description, me.objectname, me.objecttype, me.network_networkid, network.networkid, network.network
device_has_objects.device_deviceid, device_has_objects.object_objectid, device.devicename, device.devicetype, device.deviceid
FROM Object me
LEFT JOIN network network ON network.networkid = me.network_networkid
LEFT JOIN Device_has_Object device_has_objects ON device_has_objects.object_objectid = me.objectid
LEFT JOIN Device device ON device.deviceid = device_has_objects.device_deviceid;
Целью поиска является возврат объектов, принадлежащих к определенным сетям, а также предоставление устройств, на которых существует объект.
Есть ли способ избежать этой ошибки?