Skip to content

Commit d58e86e

Browse files
authored
Merge pull request #75 from UseMuffin/issue-74
Fix duplicate binding of query placeholders.
2 parents b2c32ef + 14fb71c commit d58e86e

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/Model/Behavior/FootprintBehavior.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
use ArrayObject;
77
use Cake\Database\Expression\IdentifierExpression;
8+
use Cake\Database\ExpressionInterface;
89
use Cake\Datasource\EntityInterface;
910
use Cake\Event\EventInterface;
1011
use Cake\ORM\Behavior;
@@ -133,7 +134,7 @@ protected function _injectConditions(Query $query, ArrayObject $options, array $
133134
$path = $this->getConfig('propertiesMap.' . $field);
134135

135136
$check = false;
136-
$query->traverseExpressions(function ($expression) use (&$check, $field, $query) {
137+
$query->traverseExpressions(function (ExpressionInterface $expression) use (&$check, $field, $query) {
137138
if ($expression instanceof IdentifierExpression) {
138139
!$check && $check = $expression->getIdentifier() === $field;
139140

@@ -142,7 +143,9 @@ protected function _injectConditions(Query $query, ArrayObject $options, array $
142143
$alias = $this->_table->aliasField($field);
143144
!$check && $check = preg_match(
144145
'/^' . $alias . '/',
145-
$expression->sql($query->getValueBinder())
146+
// TODO: Add test to show that cloning is necessary here to avoid issue mentioned in
147+
// https://github.com/UseMuffin/Footprint/issues/74
148+
$expression->sql(clone $query->getValueBinder())
146149
);
147150
});
148151

0 commit comments

Comments
 (0)