Pimcore - 相关对象值没有得到

Posted

技术标签:

【中文标题】Pimcore - 相关对象值没有得到【英文标题】:Pimcore - Related Object Values not getting 【发布时间】:2017-09-28 20:29:59 【问题描述】:

您好,我正在从事 pimcore 项目。

我有存储产品详细信息的产品类

在产品详细信息中,我有一个字段 ma​​nufacturer,它是指另一个 class Manufacturer

使用自定义插件保存事件,我得到了产品和制造商数据。

但是当我尝试使用 cron 作业时,我 没有获得相关(制造商)对象值。

下面是我用来获取对象详细信息的代码。

$list = new Object_Product_List();
$list->setCondition('o_id = ?', $objectId);
foreach($list as $list_data)
        
            $productdata = (array)($list_data);
            echo "<pre>";
            print_r($productdata);
            exit;
        

我得到如下输出。

Array
(
    [o_classId] => 15
    [o_className] => Product
    [name] => WS-KD WALL SHELVES
    [sku] => HWS-KD-36
    [enable] => 1
    [visibility] => 4
    [manufacturer] =>  // But this value is empty not getting Manufacturer value.
    ...........
    ......... So on
)

请帮助我在哪里犯了错误。如何获取相关的对象值?

谢谢

【问题讨论】:

【参考方案1】:

您需要使用 getter 来获取制造商对象。

像 $list_data->getManufacturer() 这样的东西应该可以工作。

还可以查看文档:

//get a related object

$relationObject = $relation-&gt;getObject();

https://www.pimcore.org/docs/latest/Objects/Object_Classes/Data_Types/Relation_Types.html

【讨论】:

谢谢你的回答也很有帮助。我通过 get 方法获取值。【参考方案2】:

为什么在尝试只获取一个元素时使用产品列表? O_id 是唯一值。您可以使用 getter 获取产品:

Product::getById($objectId);

在创建类时,您检查了制造领域的“延迟加载”选项吗?

【讨论】:

不,我试图让我的所有产品都不是一个元素,而是有数千种产品。但是是的,我已经检查了延迟加载选项。我没有检查它,它运作良好。谢谢指出 再次感谢!!!只是因为检查了延迟加载选项,我无法获得该值。我没有检查它,它运作良好。您能否详细说明为什么会发生这种情况 如果您使用“延迟加载”,则必须使用 setter 和 getter:“小心 - 使用 Getter 和 Setter!$object->multihref = null; 无法清除延迟加载时的multihref被激活。如果一个对象或multihref数据类型的值为null,对于Pimcore来说这意味着该字段的数据还没有被加载,并且在保存对象时它不会被触摸。" 好的,根据您的意见,我们需要取消选中延迟加载选项吗? 如果您有一个大型站点并且您需要优化您的站点,最好启用“延迟加载”,但是您需要使用 getter 和 setter。但是,如果您正在构建一个小型服务,并且希望产品对象的所有属性都可用,则需要取消选中“延迟加载”选项

以上是关于Pimcore - 相关对象值没有得到的主要内容,如果未能解决你的问题,请参考以下文章

使用 php 脚本将 pimcore 中的现有数据对象导出到 XML 文件

pimcore:使用本地化字段更新对象

PIMCore - CSV 导入映射父对象和对象标题

Pimcore - 如何将自定义按钮添加到对象树菜单

列出对象时的 Pimcore 异常

如何扩展 pimcore 对象模型和他的资源类