Правильно ли использовать конфигурацию UriVariable через новую ссылку для почтовой операции?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Правильно ли использовать конфигурацию UriVariable через новую ссылку для почтовой операции?

Сообщение Anonymous »

В документации платформы API о подресурсах этот пример конфигурации приведен для операции GetCollection. И это прекрасно работает.

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

#[ApiResource(
uriTemplate: '/companies/{companyId}/employees',
uriVariables: [
'companyId' => new Link(fromClass: Company::class, toProperty: 'company'),
],
operations: [ new GetCollection() ]
)]
В моем случае направление связи такое же, и я хотел таким же образом настроить операцию Post, в частности UriVariable, для использования информации метаданных/ссылок в моем процессоре. Но на самом деле я не знаю, предназначена ли эта новая ссылка для использования в операции Post.
Документация платформы API не содержит примера этого.
Вы можете сказать, что это знак, и я бы ответил, что это не первый раз, когда документация платформы API немного легковесна... Даже если был достигнут большой прогресс
В любом случае, я экспериментировал с этой конфигурацией.

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

#[Post(
uriTemplate: '/workers/{workerId}/addresses',
uriVariables: [
'workerId' => new Link(fromClass: worker::class, toProperty: 'worker'),
],
input: AddressInputDto::class,
processor: AddressStateProcessor::class
)]
class Address
{
#[ORM\Id, ORM\Column, ORM\GeneratedValue]
public ?int $id;

#[ORM\Column]
public string $addressblablabla;

#[ORM\ManyToOne(inversedBy: 'addresses')]
public ?Worker $worker = null;

public function getId()
{
return $this->id;
}
}
и это работает, раз, два.....и... вот и все.
Это проблема.
Если я хочу сохранить третий адрес для того же работника, я получаю приятную ошибку:

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

{
"@context": "/contexts/Error",
"@id": "/errors/500",
"@type": "Error",
"title": "An error occurred",
"detail": "More than one result was found for query although one row or none was expected.",
"status": 500,
"type": "/errors/500",
"trace": [
{
"file": "/app/vendor/api-platform/doctrine-orm/State/ItemProvider.php",
"line": 90,
"function": "getOneOrNullResult",
"class": "Doctrine\\ORM\\AbstractQuery",
"type": "->"
},
// ...
]
}
У меня есть несколько вопросов:
Можно ли использовать новую ссылку в конфигурации uriVariable для операции POST? Если да, то является ли это хорошей практикой? Если да, то как мне его настроить, чтобы эта ошибка больше не появлялась?
Спасибо за помощь.

Подробнее здесь: https://stackoverflow.com/questions/797 ... st-operati
Ответить

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

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

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

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

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