фильтровать запрос по нескольким полям в одном запросе - PullRequest
0 голосов
/ 16 марта 2020

Моя настройка Symfony 5 с последней версией API-платформы, работающей на PHP 7.3. Поэтому я хотел бы иметь возможность запрашивать как по имени, так и по имени пользователя (возможно, даже по электронной почте). Нужно ли писать собственный распознаватель?

Это то, что я пробовал до сих пор, но в результате WHERE name = $ name AND username = $ name.

query SearchUsers ($name: String!) {
  users(name: $name, username: $name) {
    edges {
       cursor
       node {
         id
         username
         email
         avatar
       }
     }
  }
}

My юридическое лицо:

/**
 * @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 ...
}

1 Ответ

0 голосов
/ 17 марта 2020

Условие OR в поисковом фильтре по умолчанию не обрабатывается в платформе API, для этого требуется настраиваемый фильтр (https://api-platform.com/docs/core/filters/#creating -custom-filters ).

Смотрите также: https://github.com/api-platform/core/issues/2400.

...