<?php namespace ApiQL\Language\Specs; use Doctrine\DBAL\Query\QueryBuilder; use ApiQL\Language\JsonField; /** * Class Equals * * @package ApiQL\Language\Specs */ class Equals extends AbstractSpec { use JsonField; private $parameter; private $value; /** * @param string $parameter - query parameter * @param mixed $value - parameter value */ public function __construct(string $parameter, $value) { $this->parameter = $parameter; $this->value = $value; } /** * @param QueryBuilder $queryBuilder - query builder * * @return string */ public function match(QueryBuilder $queryBuilder): string { $fieldName = $this->getJsonFieldName($this->parameter, $this->value); $fieldValue = $this->getJsonFieldValue($this->parameter, $this->value); $queryBuilder->setParameter($fieldName, $this->getJsonPropertyValue($this->value)); return $queryBuilder->expr()->eq($fieldValue, sprintf(":%s", $fieldName)); } }