Applying patch from 'Thorsten Buss'.

Fixes issues in DboSource, where mismatching types on join columns could result in incorrect query generation.
Fixes #708
This commit is contained in:
mark_story 2010-12-21 20:40:19 -05:00
parent 5d2b4c758d
commit 04929ae1df

View file

@ -503,6 +503,7 @@ class DataSource extends Object {
foreach ($keys as $key) {
$val = null;
$type = null;
if (strpos($query, $key) !== false) {
switch ($key) {
@ -526,6 +527,7 @@ class DataSource extends Object {
$val = '';
}
}
$type = $model->getColumnType($model->primaryKey);
break;
case '{$__cakeForeignKey__$}':
foreach ($model->__associations as $id => $name) {
@ -533,6 +535,8 @@ class DataSource extends Object {
if ($assocName === $association) {
if (isset($assoc['foreignKey'])) {
$foreignKey = $assoc['foreignKey'];
$assocModel = $model->$assocName;
$type = $assocModel->getColumnType($assocModel->primaryKey);
if (isset($data[$model->alias][$foreignKey])) {
$val = $data[$model->alias][$foreignKey];
@ -561,7 +565,7 @@ class DataSource extends Object {
if (empty($val) && $val !== '0') {
return false;
}
$query = str_replace($key, $this->value($val, $model->getColumnType($model->primaryKey)), $query);
$query = str_replace($key, $this->value($val, $type), $query);
}
}
return $query;