смещение объекта, связанного с pimcore - PullRequest
0 голосов
/ 04 мая 2018

Я работаю над проектом pimcore (version 4.4.3), но все еще довольно плохо знаком с pimcore.

Сначала я создал объект с именем 'Event' в административной панели и добавил данные component -> relation -> Объект с именем 'speakers'.

Теперь у меня есть controllerAction, который должен вернуть эти колонки, но я не хочу, чтобы они были все сразу, поэтому я хочу добавить предел и смещение.

Результат $eventClass->getSpeakers() возвращает массив с объектами, в которые я, похоже, не могу установить фильтры. Конечно, я могу отфильтровать их после того, как получу их все, но, если возможно, я бы хотел отфильтровать их в своем запросе.

Итак, мой вопрос, как мне отфильтровать связанные объекты на моем object?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Вы можете использовать объект Listing для этого

$speakerId = 123;
$list = new \Pimcore\Model\Object\Event\Listing();
$list->setCondition("speakers like '%,".$speakerId.",%'");

Но вы можете фильтровать только динамики по их идентификаторам. Если вы хотите отфильтровать их с некоторыми другими атрибутами, то вам нужно выполнить соединение с таблицей object_relations_ClassID.

Также посмотрите на следующую ссылку https://pimcore.com/docs/4.6.x/Development_Documentation/Objects/Object_Classes/Data_Types/Relation_Types.html#page_Filtering-for-relations-via-PHP-api

0 голосов
/ 07 мая 2018

Боюсь, что в настоящее время вы можете сделать это только с помощью SQL. Это будет выглядеть примерно так:

SELECT dest_id FROM object_relations_5 where fieldname = 'speakers' and src_id = 123 LIMIT 10;

Где 5 должно быть идентификатором вашего класса и 123 идентификатором вашего объекта. Вы можете объединить другие таблицы для дополнительной фильтрации, но это становится все сложнее.

Обычно, если вам нужно написать собственный код SQL, что-то не так с вашей моделью данных. Возможно, у вашего класса «оратор» должно быть одно отношение href к «событию» - так вы могли бы легко получить список ораторов со всей необходимой фильтрацией.

...