Ошибка "Field is not presented in selected object types"

Материал из Umicms
Версия от 10:19, 17 июня 2013; Alexei (обсуждение | вклад) (Новая страница: «'''Актуально для версии 2.9''' Иногда при составлении выборок с помощью selector возникает ошибк…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 2.9

Иногда при составлении выборок с помощью selector возникает ошибка "Field is not presented in selected object types", хотя данное поле присутствует у обьектов. Такая ошибка может возникать из-за того, что в разное время были внесены изменения в типы данных, по которым делается выборка, или были изменения в иерархии типах данных. Из-за этого, подобный код для выборки по полю "data_razmeweniya" среди всех объектов не работает:

$obj_list = new selector('pages');
$obj_list->types('hierarchy-type')->name('catalog', 'object');
$obj_list->order('data_razmeweniya')->desc();

Хотя поле "data_razmeweniya" присутствует. Примерная структура:

*Каталог
   *Подкаталог_1
      *Объект_1 
   *Подкаталог_2
      *Объект_2
   *Подкаталог_3
      *Объект_3

Для решения проблемы Вам может помочь следующий способ - необходимо сначала выбрать по type id Каталога, чтобы выбрать все, и после этого уже добавить выборку по name('catalog', 'object'), таким образом исключив из выборки подкаталоги. Итоговый код выборки будет следующий:

$obj_list = new selector('pages');
$obj_list->types('object-type')->id(125);
$obj_list->types('hierarchy-type')->name('catalog', 'object');
$obj_list->order('data_razmeweniya')->desc();