我的安装程序是Symfony 5,其最新API平台版本在PHP 7.3上运行。因此,我希望能够同时查询名称和用户名(甚至是电子邮件)。我需要编写自定义解析器吗?
这是我到目前为止尝试过的,但是会导致WHERE名称= $ name和用户名= $ name。
query SearchUsers ($name: String!) {
users(name: $name, username: $name) {
edges {
cursor
node {
id
username
email
avatar
}
}
}
}
我的实体:
/**
* @ApiResource
* @ApiFilter(SearchFilter::class, properties={
* "name": "ipartial",
* "username": "ipartial",
* "email": "ipartial",
* })
*
* @ORM\Table(name="users")
* @ORM\Entity(repositoryClass="Domain\Repository\UserRepository")
* @ORM\HasLifecycleCallbacks()
*/
class User
{
private $name;
private $username;
private $email;
// ... code omitted ...
}
[API平台中默认不处理搜索过滤器中的OR
条件,您需要使用自定义过滤器来执行此操作(https://api-platform.com/docs/core/filters/#creating-custom-filters)。