Pimcore - 相关对象值没有得到
Posted
技术标签:
【中文标题】Pimcore - 相关对象值没有得到【英文标题】:Pimcore - Related Object Values not getting 【发布时间】:2017-09-28 20:29:59 【问题描述】:您好,我正在从事 pimcore 项目。
我有存储产品详细信息的产品类。
在产品详细信息中,我有一个字段 manufacturer,它是指另一个 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->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 - 相关对象值没有得到的主要内容,如果未能解决你的问题,请参考以下文章