api平台GET项通过电子邮件或用户名获取用户的操作

时间:2018-11-08 15:14:55

标签: api-platform.com

如何使用自定义控制器操作通过实体的第二个标识符(例如,通过电子邮件获取用户或其他用户名)来获取实体?

我试图这样写resource.yaml:

kubectl delete -f deployments.yaml --grace-period=0 --force

这是可能的方法吗?还是仅是在集合上调用GET并使用App\Entity\User: itemOperations: get: method: 'GET' path: '/users/{id}' getByEmail: method: 'GET' path: '/users/email/{emailaddress}' controller: 'App\Controller\User\GetByEmailAction' 之类的过滤器的方法?

1 个答案:

答案 0 :(得分:1)

是的,您可以创建一个自定义操作。

namespace App\Controllers;
class GetByEmailAction {
  public function __invoke($emailaddress, EntityManagerInterface $em) {
     $user = $em->getRepository(User::class)->findOneBy[
         'email' => $emailaddress
     ];
     if (!$user) {
         throw new NotFoundException('User not found');
     }
     return $user;
  }
}

检查文档以获取更多示例Custom operation