Methods

queryTranslator()

queryTranslator(  $type) 

Parameters

$type

prepare()

prepare(  $query) 

Parameters

$query

_joinedFieldsConverter()

_joinedFieldsConverter(array  $joints, \Cake\Database\Query  $query) 

Parameters

array $joints
\Cake\Database\Query $query

_removeOrderingFields()

_removeOrderingFields(  $row, array  $aliases) 

Parameters

$row
array $aliases

_registerDatFieldForSorting()

_registerDatFieldForSorting(\Lqdt\OrmJson\Database\Dialect\string  $datfield, \Lqdt\OrmJson\Database\Dialect\string  $model, array  $aliases, \Cake\Database\Query  $query) 

Parameters

\Lqdt\OrmJson\Database\Dialect\string $datfield
\Lqdt\OrmJson\Database\Dialect\string $model
array $aliases
\Cake\Database\Query $query

_orderedFieldsConverter()

_orderedFieldsConverter(\Cake\Database\Expression\OrderByExpression  $order, \Cake\Database\Query  $query) 

Parameters

\Cake\Database\Expression\OrderByExpression $order
\Cake\Database\Query $query

_decorateSelectedDatFields()

_decorateSelectedDatFields(array  $row, array  $filteredFields) 

Parameters

array $row
array $filteredFields

_decorateExtractedDatFields()

_decorateExtractedDatFields(  $row, \Lqdt\OrmJson\Database\Dialect\string  $separator, \Lqdt\OrmJson\Database\Dialect\bool  $keepNestedOnExtract) 

Parameters

$row
\Lqdt\OrmJson\Database\Dialect\string $separator
\Lqdt\OrmJson\Database\Dialect\bool $keepNestedOnExtract

_selectRegularField()

_selectRegularField(\Lqdt\OrmJson\Database\Dialect\string  $field, \Lqdt\OrmJson\Database\Dialect\string  $alias, array  $fields) 

Parameters

\Lqdt\OrmJson\Database\Dialect\string $field
\Lqdt\OrmJson\Database\Dialect\string $alias
array $fields

_selectDatField()

_selectDatField(\Lqdt\OrmJson\Database\Dialect\string  $datfield, array  $fields, array  $filteredFields, \Cake\Database\Query  $query) 

Parameters

\Lqdt\OrmJson\Database\Dialect\string $datfield
array $fields
array $filteredFields
\Cake\Database\Query $query

_extractDatField()

_extractDatField(\Lqdt\OrmJson\Database\Dialect\string  $datfield, \Lqdt\OrmJson\Database\Dialect\string  $alias, array  $fields, \Cake\Database\Query  $query) 

Parameters

\Lqdt\OrmJson\Database\Dialect\string $datfield
\Lqdt\OrmJson\Database\Dialect\string $alias
array $fields
\Cake\Database\Query $query

_selectedFieldsConverter()

_selectedFieldsConverter(array  $fields, \Cake\Database\Query  $query) 

Parameters

array $fields
\Cake\Database\Query $query

_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

_removeAliasesFromConditions()

_removeAliasesFromConditions(  $query) 

We need to override this method from SqlDialectTrait as it breaks apart datfields with delete

Parameters

$query