@@ 2087-2109 (lines=23) @@ | ||
2084 | * |
|
2085 | * @return \Doctrine\ORM\Query\AST\CollectionMemberExpression |
|
2086 | */ |
|
2087 | public function CollectionMemberExpression() { |
|
2088 | $not = false; |
|
2089 | $entityExpr = $this->EntityExpression(); |
|
2090 | ||
2091 | if ($this->lexer->isNextToken(Lexer::T_NOT)) { |
|
2092 | $this->match(Lexer::T_NOT); |
|
2093 | ||
2094 | $not = true; |
|
2095 | } |
|
2096 | ||
2097 | $this->match(Lexer::T_MEMBER); |
|
2098 | ||
2099 | if ($this->lexer->isNextToken(Lexer::T_OF)) { |
|
2100 | $this->match(Lexer::T_OF); |
|
2101 | } |
|
2102 | ||
2103 | $collMemberExpr = new AST\CollectionMemberExpression( |
|
2104 | $entityExpr, $this->CollectionValuedPathExpression() |
|
2105 | ); |
|
2106 | $collMemberExpr->not = $not; |
|
2107 | ||
2108 | return $collMemberExpr; |
|
2109 | } |
|
2110 | ||
2111 | /** |
|
2112 | * Literal ::= string | char | integer | float | boolean |
|
@@ 2726-2743 (lines=18) @@ | ||
2723 | * |
|
2724 | * @return \Doctrine\ORM\Query\AST\ExistsExpression |
|
2725 | */ |
|
2726 | public function ExistsExpression() { |
|
2727 | $not = false; |
|
2728 | ||
2729 | if ($this->lexer->isNextToken(Lexer::T_NOT)) { |
|
2730 | $this->match(Lexer::T_NOT); |
|
2731 | $not = true; |
|
2732 | } |
|
2733 | ||
2734 | $this->match(Lexer::T_EXISTS); |
|
2735 | $this->match(Lexer::T_OPEN_PARENTHESIS); |
|
2736 | ||
2737 | $existsExpression = new AST\ExistsExpression($this->Subselect()); |
|
2738 | $existsExpression->not = $not; |
|
2739 | ||
2740 | $this->match(Lexer::T_CLOSE_PARENTHESIS); |
|
2741 | ||
2742 | return $existsExpression; |
|
2743 | } |
|
2744 | ||
2745 | /** |
|
2746 | * ComparisonOperator ::= "=" | "<" | "<=" | "<>" | ">" | ">=" | "!=" |