Как создать запрос на обновление записи с помощью CakePHP 4.4, Slim-4 и MariaDB.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как создать запрос на обновление записи с помощью CakePHP 4.4, Slim-4 и MariaDB.

Сообщение Anonymous »

Предыстория этого запроса такова: я использую SlimFramwork 4 Skeleton. Я занимаюсь этим уже пару лет. Мне нужно обновить запись в базе данных. У меня есть этот метод

Код: Выделить всё

 namespace App\Domain\Customer\Data;

use Cake\Database\Query;

final class CustomerFinderResult
{
/**
* @var CustomerFinderItem[]
*/
public array $customers = [];

private Query $query;

public function __construct(Query $query)
{
$this->query = $query;
}

public function updateSubscriptionStatus(string $subscriptionId, string $status): void
{
$query = $this->query->update('customers')
->set(['subscription_status' => $status])
->where(['paypal_subscription_id' => $subscriptionId]);
$query->execute();
}
При выполнении метода никакие записи не обновляются. Я убедился, что передаю строки. Я поместил входные данные в файл журнала, чтобы убедиться, что то, что я отправляю в метод, имеет правильный формат и что данные передаются.
Я обратился к Gemini за помощью, но запрос, который он мне дал, не удался, потому что используемый им метод не существует, говорится в полученном мной сообщении об ошибке.

Код: Выделить всё

 public function updateSubscriptionStatus(string $subscriptionId, string $status): void
{
$customer = $this->Customers->find()->where(['paypal_subscription_id' =>
$subscriptionId])->firstOrFail();
$customer->subscription_status = $status;
$this->Customers->save($customer);
}
Метод find() — это вызов неизвестного метода. Я заглянул в метод Cake\Database\Query и нашел его в классе. Документация не проливает мне на это света. Я проверил документацию класса и изменил запрос, увидев это.

Код: Выделить всё

$query->update('articles')->set(['title' => 'The Title'], ['title' => 'string']);
Я изменил свой запрос на следующий:

Код: Выделить всё

 $query = $this->query->update('customers')
->set(
['subscription_status' => $status],
['paypal_subscription_id' => $subscriptionId]
);
$query->execute();
Никакой радости. Я в растерянности, что делать дальше. Есть предложения?

Подробнее здесь: https://stackoverflow.com/questions/792 ... nd-mariadb
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»