2014-09-07 4 views
0

Я пытаюсь создать новые элементы в четырех приложениях через одну форму - некоторые элементы станут ссылками на приложения. Например, я сначала создаю элемент Entity, затем элемент Person и свяжу новое Entity с Person в поле ссылки приложения в приложении Person. Затем создайте проект и свяжите как объект, так и объект с проектом. Это было успешным, пока я не обновился до новейшего Podio-PHP. Раньше, когда вновь созданные элементы возвращали item_id как integer, я мог передать это поле в качестве ссылки на приложение до создания следующего элемента.Получить вновь созданный идентификатор элемента Podio-PHP из PodioItem: Создать

Я пытаюсь получить 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

На самом деле это плохо обрабатывается в podio-php (с тех пор он был обработан одинаково un-well, так как навсегда). Если вы посмотрите на метод 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; 
Смежные вопросы