小编Sne*_*nek的帖子

Symfony2 DI服务容器优先级/流量

故事

我们以此请求https://nike.awesomedomainname.com/为例.我需要一个可以获取的服务nike.


我现在有什么

我有一个从服务器获取路由器密钥的服务@request_stack.让我们使用公司作为路由器密钥.

我的主要路线如下;

<import host="{company}.domain.{_tld}" prefix="/" schemes="https" resource="@ExampleBundle/Resources/config/routing.xml">
    <default key="_tld">%app_tld%</default>
    <requirement key="_tld">com|dev</requirement>
    <requirement key="company">[a-z0-9]+</requirement>
</import>
Run Code Online (Sandbox Code Playgroud)

所以我写了这个服务来获取密钥并搜索公司;

...

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;

class CompanyContextRequest {

    protected $request;
    protected $companyRepository;

    public function __construct(RequestStack $requestStack, CompanyRepository $companyRepository) {
        $this->request = $requestStack->getMasterRequest();
        $this->companyRepository = $companyRepository;
    }

    public function getCompany()
    {
        if (null !== $this->request)
        {
            $company = $this->request->attributes->get('company');
            if (null !== $company)
            {
                return $this->companyRepository->findOneBy([
                    'key' => $company
                ]);
            }
        }
    }

    ....

}
Run Code Online (Sandbox Code Playgroud)

和服务xml定义;

<service …
Run Code Online (Sandbox Code Playgroud)

dependency-injection request symfony

9
推荐指数
1
解决办法
790
查看次数

在单个查询中过滤多个字段的查询

我的设置是 Symfony 5,最新的 API-Platform 版本在 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
       }
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

我的实体:

/**
 * @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 ... …
Run Code Online (Sandbox Code Playgroud)

php symfony graphql api-platform.com

2
推荐指数
2
解决办法
2295
查看次数