【问题标题】:pimcore related object offsetpimcore 相关对象偏移
【发布时间】:2018-10-14 16:59:35
【问题描述】:

我正在从事一个 pimcore 项目 (version 4.4.3),但对 pimcore 本身来说还是很陌生。

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

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

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

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

【问题讨论】:

    标签: php object pimcore


    【解决方案1】:

    恐怕目前您只能使用 SQL 来完成。它看起来像这样:

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

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

    通常,如果您必须编写自定义 SQL 代码,您的数据模型就会出现问题。也许您的“演讲者”类应该与“事件”有一个单一的 href 关系 - 这样您就可以轻松获得演讲者列表,并进行所有您想要的过滤。

    【讨论】:

      【解决方案2】:

      您可以为此使用列表对象

      $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

      【讨论】:

        猜你喜欢
        • 2017-09-28
        • 1970-01-01
        • 2023-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-25
        • 2023-03-25
        • 1970-01-01
        相关资源
        最近更新 更多