I created a Bundle to allow others to use the jsonb datatype in their projects. https://github.com/boldtrn/JsonbBundle
I just figured that it could be better to add the content of the bundle to the doctrine-extensions (https://github.com/beberlei/DoctrineExtensions). What do you think? Especially if the jsonb datatype will be added to the doctrine core. Best, Robin On Monday, April 13, 2015 at 3:07:19 PM UTC+2, Robin wrote: > > Hi Benjamin, > > thanks for that workaround. This works with minor modification (change 1 > to TRUE): > SELECT f FROM Foo f WHERE AT_LOWER(f.jsonField, "something") = TRUE > > Here is the Code for anybody that is interested: > > class JsonbContains extends FunctionNode > { > public $identifier = null; > public $value = null; > > public function parse(\Doctrine\ORM\Query\Parser $parser) > { > $parser->match(Lexer::T_IDENTIFIER); > $parser->match(Lexer::T_OPEN_PARENTHESIS); > $this->identifier = $parser->ArithmeticPrimary(); > $parser->match(Lexer::T_NONE); > $parser->match(Lexer::T_GREATER_THAN); > $this->value = $parser->ArithmeticPrimary(); > $parser->match(Lexer::T_CLOSE_PARENTHESIS); > } > > public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) > { > return '(' . > $this->identifier->dispatch($sqlWalker) . ' @> ' . > $this->value->dispatch($sqlWalker) . > ')'; > } > } > > > SELECT p > FROM AppBundle:Project p > WHERE JSONB_CONTAINS( p.values @> '{\"ACTIVE\": \"1\"}' ) = TRUE > > > Best, > Robin > > On Monday, April 13, 2015 at 2:47:38 PM UTC+2, kontakt wrote: >> >> Hi Robin, >> >> that is not possible, the Parser is not extendable. >> >> You can however add a DQL function that translates to this by performing >> some trickery: SELECT f FROM Foo f WHERE AT_LOWER(f.jsonField, "something") >> = 1 >> >> Then have AT_LOWER generate sql: (f.json_field @> "something") = 1 if >> that is valid >> >> greetings >> >> On Mon, Apr 13, 2015 at 2:33 PM, Robin <[email protected]> wrote: >> >>> I want to extend the Doctrine Parser: Doctrine\ORM\Query\Parser. In >>> detail I want to add a ComparisonOperator (@> for postgresql >>> jsonb) that I need for a custom Query. >>> >>> Is this possible without changing the File? When I change the Parser >>> directly everything works fine, however I think that is not the way to go. >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "doctrine-user" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at http://groups.google.com/group/doctrine-user. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- You received this message because you are subscribed to the Google Groups "doctrine-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/doctrine-user. For more options, visit https://groups.google.com/d/optout.
