0

我正在尝试通过一种形式在四个应用程序应用程序中创建新项目——其中一些项目将成为应用程序引用。例如,我首先创建一个实体项,然后创建一个人员项,并通过人员应用程序中的应用程序引用字段将新实体与人员相关联。然后创建一个项目并将人员和实体与项目相关联。在我升级到最新的 Podio-PHP 之前,这一直是成功的。过去,当新创建的项目将 item_id 作为整数返回时,我可以在创建下一个项目之前将其作为应用程序引用传递到字段中。

我一直在尝试将 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 是我尝试存储整数的位置,因此我可以将它作为应用程序引用传递给下一个项目创建。

4

1 回答 1

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;
于 2014-09-08T02:08:56.540 回答