Я начал делать небольшой проект на платформе API, чтобы проверить, как он работает.
К сожалению, в самом начале я столкнулся с проблемой, что не могу установить отношение @ApiSubresource
ManyToOne
, потому что оно выбрасывает ошибка
"[Семантическая ошибка] строка 0, столбец 129 рядом с 'users =: cur': Ошибка: недопустимое выражение PathExpression. Ожидается StateFieldPathExpression или SingleValuedAssociationField."
My классы выглядят так:
/**
* @ApiResource(
* collectionOperations={"post"},
* itemOperations={
* "get"={ "security"="is_granted('VIEW_AS_OWNER_USER', object)", }
* },
* normalizationContext={"groups"={"operation:read"}},
* denormalizationContext={"groups"={"operation:write"}}
* )
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
* @ORM\Table(name="`user`")
*/
class User implements UserInterface
{
/* rest of the entity declaration omitted */
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Band", inversedBy="users")
* @ApiSubresource()
*/
private $band;
}
/**
* @ApiResource()
* @ORM\Entity(repositoryClass="App\Repository\BandRepository")
* @ORM\Table(name="band")
*/
class Band
{
/* rest of the entity declaration omitted */
/**
* @ORM\OneToMany(targetEntity="App\Entity\User", mappedBy="band")
*/
private $users;
}
После копания внутри Symfony Parser выглядит так, как будто пытается выполнить это SQL:
SELECT o FROM App \ Entity \ Band o ГДЕ o IN (ВЫБЕРИТЕ IDENTITY (id_a1.band) ИЗ ПРИЛОЖЕНИЯ \ Entity \ User id_a1 ГДЕ id_a1.id =: id_p1) И o.users =: current_user
С этими двумя параметрами :
Я нашел несколько советов, но каждый был за Symfony для ручного запроса. Есть какой-то автоматизированный c запрос на построение, по крайней мере для меня, самого базового c уровня.
Вы знаете, что я сделал неправильно? Или это просто сломанные рамки?