#exact-online #picqer-exact-php-client
#точный-онлайн #picqer-exact-php-client
Вопрос:
Я использовал клиентскую библиотеку PHP для точного онлайн.
Мне нужно сохранить запись, основываясь на условии, существует она или нет. Поскольку записи успешно сохраняются. Но, к сожалению, записи не обновляются.
$customer = [
'address' => 'No.22/N, 91 Cross, XYZ Street, ABC Road',
'address2' => 'DEF',
'city' => 'GHI',
'customerid' => '999',
'country' => 'DE',
'name' => 'Nishanth',
'zipcode' => '123456'
];
// Create a new account
$account->AddressLine1 = $customer['address'];
$account->AddressLine2 = $customer['address2'];
$account->City = $customer['city'];
$account->Code = $customer['customerid'];
$account->Country = $customer['country'];
$account->IsSales = 'true';
$account->Name = $customer['name'];
$account->Postcode = $customer['zipcode'];
$account->Email = 'nishanth@gmail.com';
$account->Status = 'C';
Из приведенного выше фрагмента кода, в зависимости от условия, при котором запись должна быть обновлена или сохранена из приведенных ниже фрагментов кода. Следовали два подхода:
Я подхожу:
if($AccInfo)
{ // Update
$AccInfo->AddressLine1 = $customer['address'];
$AccInfo->AddressLine2 = $customer['address2'];
$AccInfo->City = $customer['city'];
$updateAcc = $AccInfo->update();
}
else
{ // Save
$savedAcc = $Accounts->save();
}
Результат:
Warning: Attempt to assign property 'AddressLine1' of non-object in E:xampphtdocsexact-php-client-masterexampleexample.php on line 506
Warning: Attempt to assign property 'AddressLine2' of non-object in E:xampphtdocsexact-php-client-masterexampleexample.php on line 507
Warning: Attempt to assign property 'City' of non-object in E:xampphtdocsexact-php-client-masterexampleexample.php on line 508
Fatal error: Uncaught Error: Call to a member function update() on array in E:xampphtdocsexact-php-client-masterexampleexample.php:510 Stack trace: #0 {main} thrown in E:....exact-php-client-masterexampleexample.php on line 510
ВТОРОЙ подход:
if($AccInfo)
{ // Update
$updateAcc = $Accounts->update();
}
else
{ // Save
$savedAcc = $Accounts->save();
}
Результат:
PicqerFinancialsExactApiException : Error 400: Bad Request - Error in query syntax.
Как нам нужно обновить записи для точной онлайн-панели мониторинга?
Комментарии:
1. Каков фактический запрос, отправленный по проводам? Возможно, вы сможете получить доступ к ней с помощью Wireshark или около того.
2. Как мне начать использовать wireshark для анализатора пакетов. Я решил, написав свои собственные методы, взгляните. Пожалуйста, отправьте это в Git Issue Tracker @PatrickHofman
Ответ №1:
Наконец, я решил проблему, написав пользовательские методы
$AccInfo = $Accounts->filter("Email eq 'nishanthjay@gmail.com'");
if($AccInfo)
{ // Update
$updateAcc = $Accounts->customUpdate($AccInfo[0]->ID);
echo '<pre>'; print_r($updateAcc);
}
else
{ // Save
$savedAcc = $Accounts->save();
}
Я написал свои собственные методы из ..srcPicqerFinancialsExactPersistanceStorable.php
public function customUpdate($primaryKey='')
{
$this->fill($this->update2($primaryKey));
return $this;
}
public function update2($primaryKey='')
{
return $this->connection()->put($this->url() . "(guid'$primaryKey')", $this->json());
}
Для любого, кто точно знает, как обновить до ExactOnline. Вы всегда можете ответить на опубликованный вопрос с помощью встроенного вызова функции, известного как update()
.