我正在做一个pimcore
项目(version 4.4.3
),但对pimcore
本身来说仍然很新。
首先,我在管理面板中制作了一个名为'Event'
的对象,并添加了一个名为'speakers'.
的数据component -> relation ->
对象
现在我有一个需要返回这些扬声器的controllerAction
,但我不希望一次将它们全部返回,所以我希望添加一个限制和偏移量。
$eventClass->getSpeakers()
的结果返回一个数组,其中包含我似乎无法在其上放置任何过滤器的对象。 当然,我可以在检索到所有它们后过滤它们,但如果可能的话,我想在我的请求中过滤它们。
所以我的问题是,如何过滤object
上的相关对象?
恐怕目前您只能使用 SQL 来做到这一点。它将看起来像这样:
SELECT dest_id FROM object_relations_5 where fieldname = 'speakers' and src_id = 123 LIMIT 10;
其中 5 应该是类的 id,123 应该是对象的 id。您可以联接其他表以执行更多筛选,但这变得越来越复杂。
通常,如果必须编写自定义 SQL 代码,则数据模型有问题。也许您的"扬声器"类应该与"事件"具有单个 href 关系 - 这样您就可以轻松列出具有所需过滤功能的扬声器列表。
您可以使用 List 对象
$speakerId = 123;
$list = new PimcoreModelObjectEventListing();
$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