diff --git a/src/Query/Mysql/JsonContains.php b/src/Query/Mysql/JsonContains.php index 23e2e0e1..c72e968d 100644 --- a/src/Query/Mysql/JsonContains.php +++ b/src/Query/Mysql/JsonContains.php @@ -3,6 +3,7 @@ namespace DoctrineExtensions\Query\Mysql; use Doctrine\ORM\Query\AST\Functions\FunctionNode; +use Doctrine\ORM\Query\AST\Node; use Doctrine\ORM\Query\Parser; use Doctrine\ORM\Query\SqlWalker; use Doctrine\ORM\Query\TokenType; @@ -10,15 +11,23 @@ use function sprintf; /** - * "JSON_CONTAINS" "(" StringPrimary "," StringPrimary ["," StringPrimary] ")" + * JsonContainsFunction ::= "JSON_CONTAINS" "(" StringPrimary "," StringPrimary ["," StringPrimary] ")" + * + * @link https://dev.mysql.com/doc/refman/en/json-search-functions.html#function_json-contains + * + * @example SELECT JSON_CONTAINS("{x: 2}", 2, "$.x") + * @example SELECT JSON_CONTAINS(foo.bar, "x", "$.bar") FROM entity */ class JsonContains extends FunctionNode { + /** @var Node */ protected $target; + /** @var Node */ protected $candidate; - protected $path; + /** @var Node|null */ + protected $path = null; public function parse(Parser $parser): void { diff --git a/src/Query/Mysql/JsonDepth.php b/src/Query/Mysql/JsonDepth.php index 47c97e38..3cee777e 100644 --- a/src/Query/Mysql/JsonDepth.php +++ b/src/Query/Mysql/JsonDepth.php @@ -3,6 +3,7 @@ namespace DoctrineExtensions\Query\Mysql; use Doctrine\ORM\Query\AST\Functions\FunctionNode; +use Doctrine\ORM\Query\AST\Node; use Doctrine\ORM\Query\Parser; use Doctrine\ORM\Query\SqlWalker; use Doctrine\ORM\Query\TokenType; @@ -10,10 +11,15 @@ use function sprintf; /** - * "JSON_DEPTH" "(" StringPrimary ")" + * JsonDepthFunction ::= "JSON_DEPTH" "(" StringPrimary ")" + * + * @link https://dev.mysql.com/doc/refman/en/json-attribute-functions.html#function_json-depth + * + * @example SELECT JOIN_DEPTH(foo.bar) FROM entity */ class JsonDepth extends FunctionNode { + /** @var Node */ protected $target; public function parse(Parser $parser): void diff --git a/src/Query/Mysql/JsonLength.php b/src/Query/Mysql/JsonLength.php index d367aaea..1118e6c1 100644 --- a/src/Query/Mysql/JsonLength.php +++ b/src/Query/Mysql/JsonLength.php @@ -3,6 +3,7 @@ namespace DoctrineExtensions\Query\Mysql; use Doctrine\ORM\Query\AST\Functions\FunctionNode; +use Doctrine\ORM\Query\AST\Node; use Doctrine\ORM\Query\Parser; use Doctrine\ORM\Query\SqlWalker; use Doctrine\ORM\Query\TokenType; @@ -10,13 +11,19 @@ use function sprintf; /** - * "JSON_LENGTH" "(" StringPrimary ["," StringPrimary] ")" + * JsonLengthFunction ::= "JSON_LENGTH" "(" StringPrimary ["," StringPrimary] ")" + * + * @link https://dev.mysql.com/doc/refman/en/json-attribute-functions.html#function_json-length + * + * @example SELECT JSON_LENGTH(foo.bar, "$.low") FROM entity */ class JsonLength extends FunctionNode { + /** @var Node */ protected $target; - protected $path; + /** @var Node|null */ + protected $path = null; public function parse(Parser $parser): void {