我正在开展一个pimcore
项目(version 4.4.3
),但对pimcore
本身来说仍然很新。
首先,我在管理面板中创建了一个名为'Event'
的对象,并添加了一个名为component -> relation ->
的数据'speakers'.
对象
现在我有一个controllerAction
需要返回这些扬声器,但我不想一次全部,所以我希望增加一个限制和偏移量。
$eventClass->getSpeakers()
的结果返回一个数组,其中包含我似乎无法放置任何过滤器的对象。
当然我可以在检索完所有内容后对其进行过滤,但如果可能的话,我想在我的请求中过滤它们。
所以我的问题是,如何过滤object
上的相关对象?
答案 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表进行连接。