我正在尝试通过一个表单在四个应用程序应用程序中创建新项目 - 有些项目将成为应用程序参考。例如,我首先创建一个Entity项,然后创建一个Person项,并通过Person App中的app参考字段将新实体与Person相关联。然后创建一个Project并将Person和Entity都关联到Project。这是成功的,直到我升级到最新的Podio-PHP。在过去,当新创建的项目将item_id作为整数返回时,我可以在创建下一个项目之前将其作为app引用传递到字段中。
我一直在尝试将item_id作为整数,所以我也可以这样做,但我一直都是null。无论如何,考虑到Podio现在将新创建的项目作为对象返回的方式,我应该以不同的方式尝试吗?
$app_id = 1234567;
$fields = new PodioItemFieldCollection(array(
...I am defining external_id and values...
));
$item = new PodioItem(array(
'app' => new PodioApp($app_id),
'fields' => $fields,
));
if( $files ){
$item->files = new PodioCollection($files);
};
$item->save();
$new_id = $item->item_id;
return $new_id;
$ new_id是我试图存储整数的地方,所以我可以将它作为应用程序引用传递给下一个项目。
答案 0 :(得分:1)
在podio-php中它并没有得到很好的处理(尽管它已经被永远处理过了)。如果您查看save
方法,可以看到发生了什么:https://github.com/podio/podio-php/blob/master/models/PodioItem.php#L58-L72
public function save($options = array()) {
$json_attributes = $this->as_json_without_readonly_fields();
if ($this->id) {
return self::update($this->id, $json_attributes, $options);
}
else {
if ($this->app && $this->app->id) {
return self::create($this->app->id, $json_attributes, $options);
}
else {
throw new PodioMissingRelationshipError('{"error_description":"Item is missing relationship to app"}', null, null);
}
}
}
save()
未将新item_id分配给对象本身。这是一个错误,如果您在https://github.com/podio/podio-php/issues创建了一个问题就可以了,这样就可以修复。
现在您可以看到save()
返回与静态create
方法相同的内容。所以你的最后三行需要替换为:
$new_item_placeholder = $item->save();
$item->item_id = $new_item_placeholder->item_id;
return $item->item_id;