#symfony #api-platform.com
#symfony #api-platform.com
Вопрос:
У меня есть этот объект
/**
* @ApiResource()
* @ORMEntity(repositoryClass="AppRepositoryFeedRepository")
*/
class Feed implements AuthoredEntityInterface
{
/**
* @ORMId()
* @ORMGeneratedValue()
* @ORMColumn(type="integer")
*/
private $id;
/**
* @ORMManyToOne(targetEntity="AppEntityUser", inversedBy="myFeeds")
* @ORMJoinColumn(nullable=false)
*/
private $user;
/**
* @ORMColumn(type="string", length=255)
*/
private $name;
/**
* @ORMColumn(type="string", length=2083, unique=true)
*/
private $url;
// various getters and setters
}
используя созданный мной интерфейс AuthoredEntityInterface, я могу автоматически назначить пользователя зарегистрированным пользователем.
Мне нужно было бы знать, как настроить collectionOperations, поэтому, когда я войду в систему как пользователь с id = 1, при вызове / api / feeds я буду извлекать элементы только с user = 1. Если это возможно, я хотел бы сделать это с аннотацией, в противном случае подойдет любой другой метод.
Спасибо.
Ответ №1:
Если это только для подключенного пользователя, вам нужно текущее расширение пользователя (расширение doctrine). В противном случае вам необходимо создать ссылку «дополнительный ресурс».
Ссылка на расширение и на дополнительный ресурс.
Наслаждайтесь 🙂 (и спасибо timisorean за обзор)
Комментарии:
1. Спасибо, Флориан, я одобрил этот ответ, потому что, просматривая документацию, это именно то, что я искал (расширение). Однако по какой-то причине расширение не запускается, даже если я запускаю консоль debug: container, я вижу, что оно правильно зарегистрировано. Есть идеи? Спасибо.
2. Здесь мне нужно больше информации… правильно ли зарегистрировано ваше расширение в services.yaml? У вас есть git, который я могу клонировать?
3. конечно: bitbucket.org/msechi/symfony4-api-platform-test/branch /… спасибо
4. Я видел ваш тест (печать 12345), вы не можете протестировать расширение doctrine таким образом. То, что вы делаете в этих функциях, не возвращается. Он запускается перед выполнением sql. Попробуйте принудительно зарегистрировать в services.yaml. Удалите if в addWhere и правильно установите $user. и … удачи 🙂