Spaces:
No application file
No application file
File size: 1,281 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
<?php
namespace Mautic\LeadBundle\Entity;
use Doctrine\DBAL\Query\Expression\CompositeExpression;
use Doctrine\DBAL\Query\QueryBuilder;
trait ExpressionHelperTrait
{
/**
* @param QueryBuilder|\Doctrine\ORM\QueryBuilder $q
* @param $includeIsNull true/false or null to auto determine based on operator
*
* @return mixed
*/
public function generateFilterExpression($q, $column, $operator, $parameter, $includeIsNull, CompositeExpression $appendTo = null)
{
// in/notIn for dbal will use a raw array
if (!is_array($parameter) && !str_starts_with($parameter, ':')) {
$parameter = ":$parameter";
}
if (null === $includeIsNull) {
// Auto determine based on negate operators
$includeIsNull = in_array($operator, ['neq', 'notLike', 'notIn']);
}
if ($includeIsNull) {
$expr = $q->expr()->or(
$q->expr()->$operator($column, $parameter),
$q->expr()->isNull($column)
);
} else {
$expr = $q->expr()->$operator($column, $parameter);
}
if ($appendTo) {
return $appendTo->with($expr);
}
return $expr;
}
}
|