\Lqdt\OrmJson\Database\DialectDatFieldMysqlWhereTrait

Summary

Methods
Properties
Constants
No public methods found
No public properties found
No constants found
_filtersConverter()
_rawSqlConverter()
_comparisonConverter()
_unaryExpressionConverter()
_queryExpressionConverter()
No protected properties found
N/A
No private methods found
No private properties found
N/A

Methods

_filtersConverter()

_filtersConverter(string|\Cake\Database\ExpressionInterface  $expression, \Cake\Database\Query  $query) 

Returns the appropriate ExpressionInterface regarding the incoming one

Parameters

string|\Cake\Database\ExpressionInterface $expression

Incoming expression

\Cake\Database\Query $query

_rawSqlConverter()

_rawSqlConverter(string  $expression, \Cake\Database\Query  $query) : \Cake\Database\Expression\QueryExpression

Returns a new QueryExpression built upon the parsing of the expression to update datfield names

Parameters

string $expression

Raw expression to transform

\Cake\Database\Query $query

Returns

\Cake\Database\Expression\QueryExpression —

QueryExpression

_comparisonConverter()

_comparisonConverter(\Cake\Database\Expression\Comparison  $expression, \Cake\Database\Query  $query) : \Cake\Database\Expression\Comparison|\Cake\Database\Expression\QueryExpression

Update or replace the Comparison expression to perform comparisons on datFields. In some cases, PDO limitations implies to replace the expression with a raw SQL fragment. It can be a bit dangerous when using raw user input to perform global matching in `array` mode.

Regular fields expressions are left as is.

Parameters

\Cake\Database\Expression\Comparison $expression

Comparison expression

\Cake\Database\Query $query

Returns

\Cake\Database\Expression\Comparison|\Cake\Database\Expression\QueryExpression —

Updated expression

_unaryExpressionConverter()

_unaryExpressionConverter(\Cake\Database\Expression\UnaryExpression  $expression, \Cake\Database\Query  $query) : \Cake\Database\Expression\UnaryExpression

Parses the unary expression to apply conversions on childrens and returns an updated UnaryExpression

Note : This a VERY hacky way because the UnaryExpression class doesn't expose getter/setter for protected _value property.

In this implementation, it causes an infinite loop when used directly with a SQL fragment :

['NOT' => 'sub.prop@datfield like "%buggy%"]

That's why, an exception is thrown as soon as $value is extracted

Parameters

\Cake\Database\Expression\UnaryExpression $expression

Expression

\Cake\Database\Query $query

Returns

\Cake\Database\Expression\UnaryExpression —

New expression

_queryExpressionConverter()

_queryExpressionConverter(\Cake\Database\Expression\QueryExpression  $expression, \Cake\Database\Query  $query) : \Cake\Database\Expression\QueryExpression

Iterates over a QueryExpression and replace Comparison expressions to handle JSON comparison in datfields.

Parameters

\Cake\Database\Expression\QueryExpression $expression

QueryExpression

\Cake\Database\Query $query

Returns

\Cake\Database\Expression\QueryExpression —

Updated QueryExpression