pimcore相关对象偏移量

时间:2018-05-04 08:54:14

标签: php object pimcore

我正在开展一个pimcore项目(version 4.4.3),但对pimcore本身来说仍然很新。

首先,我在管理面板中创建了一个名为'Event'的对象,并添加了一个名为component -> relation ->的数据'speakers'.对象

现在我有一个controllerAction需要返回这些扬声器,但我不想一次全部,所以我希望增加一个限制和偏移量。

$eventClass->getSpeakers()的结果返回一个数组,其中包含我似乎无法放置任何过滤器的对象。 当然我可以在检索完所有内容后对其进行过滤,但如果可能的话,我想在我的请求中过滤它们。

所以我的问题是,如何过滤object上的相关对象?

2 个答案:

答案 0 :(得分:0)

我担心目前你只能用SQL来做。它看起来像这样:

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

其中5应该是您的班级ID,123应该是您的对象的ID。您可以加入其他表来进行更多过滤,但它变得越来越复杂。

通常,如果您必须编写自定义SQL代码,则数据模型出现问题。也许你的“演讲者”课程应该与“事件”有一个单独的href关系 - 这样你就可以轻松地使用你想要的所有过滤方式列出发言者。

答案 1 :(得分:0)

您可以使用Listing对象

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

但您只能使用其ID过滤扬声器。如果要使用其他一些属性过滤它们,则必须使用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