从PodioItem获取新创建的Podio-PHP项目ID:创建

时间:2014-09-07 21:27:10

标签: podio

我正在尝试通过一个表单在四个应用程序应用程序中创建新项目 - 有些项目将成为应用程序参考。例如,我首先创建一个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是我试图存储整数的地方,所以我可以将它作为应用程序引用传递给下一个项目。

1 个答案:

答案 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;