我有一个项目引用了另一个应用程序的字段。呼叫具有分配的客户端。
我使用这个库: http: //podio.github.io/podio-php/
我关注了这篇文章: http: //podio.github.io/podio-php/fields/
我想通过更改引用另一个应用程序的字段的item_id来更新现有项目。item_id已存在于其他应用程序中。
这是我尝试过的(当触发 Webhook 时会发生这种情况):
$item = PodioItem::get($_POST['item_id']);
$item->fields['client']->values = array(
array('item_id' => $id_client)
);
$item->save(array(
'hook' => false,
'silent' => true
));
和
$item = PodioItem::get($_POST['item_id']);
$item->fields['client']->values = array('item_id' => $id_client);
$item->save(array(
'hook' => false,
'silent' => true
));
其中 'client' 是字段的外部 id,$id_client 是一个整数。这是我得到的错误:
[18-Aug-2014 17:33:30 UTC] PHP Notice: Indirect modification of overloaded property PodioItem::$field has no effect in /home1/magikweb/public_html/dev/magik-net/helpdesk/webhook/call.php on line 66
[18-Aug-2014 17:33:30 UTC] PHP Warning: Creating default object from empty value in /home1/magikweb/public_html/dev/magik-net/helpdesk/webhook/call.php on line 66
如果有人可以向我解释为什么这不起作用,我将不胜感激。提供的文档在该主题上尚不清楚。
谢谢!
解决方案
我让它以这种方式工作,感谢 Andreas:
if(!isset($item->fields['client']->values[0]->item_id)){
$item->fields['client'] = new PodioAppItemField();
$item->fields['client']->values = array(
array('item_id' => $id_client)
);
$item->save(array(
'hook' => false,
'silent' => true
));
}