From 8b3e841dce6c73de9e64916feb68e3c5c8fdd465 Mon Sep 17 00:00:00 2001 From: dogmatic69 Date: Sun, 7 Oct 2012 14:18:27 +0100 Subject: [PATCH] fixing up auto joins --- Model/AppModel.php | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/Model/AppModel.php b/Model/AppModel.php index ee5b246c0..325bb1507 100644 --- a/Model/AppModel.php +++ b/Model/AppModel.php @@ -347,10 +347,27 @@ protected function _joinConditions($Model, &$options) { $FromModel = $this->_getModelObject($options['from']); } + $alias = $Model->alias; + if(!empty($options['alias'])) { + $alias = $options['alias']; + } + $relationType = $this->_relationType($Model, $FromModel); switch($relationType) { case 'hasOne': - throw new InvalidArgumentException('Not implemented'); + if(empty($FromModel->{$relationType}[$Model->alias]['foreignKey'])) { + if(empty($FromModel->{$relationType}[$Model->alias]['conditions'])) { + throw new InvalidArgumentException('Unable to determin relation'); + } + + return $options['conditions'] = $FromModel->{$relationType}[$Model->alias]['conditions']; + } + + if(!empty($FromModel->{$relationType}[$Model->alias]['conditions'])) { + $options['conditions'] = $FromModel->{$relationType}[$Model->alias]['conditions']; + } + $options['conditions'][] = $options['alias'] . '.' . $FromModel->{$relationType}[$Model->alias]['foreignKey'] . ' = ' . $FromModel->alias . '.' . $FromModel->primaryKey; + return; break; case 'hasMany': @@ -365,11 +382,11 @@ protected function _joinConditions($Model, &$options) { if($relationType == 'belongsTo') { return $options['conditions'] = array( - $Model->alias . '.' . $FromModel->primaryKey . ' = ' . $FromModel->alias . '.' . $FromModel->{$relationType}[$Model->alias]['foreignKey'] + $options['alias'] . '.' . $FromModel->primaryKey . ' = ' . $FromModel->alias . '.' . $FromModel->{$relationType}[$Model->alias]['foreignKey'] ); } elseif($relationType == 'hasMany') { return $options['conditions'] = array( - $Model->alias . '.' . $FromModel->{$relationType}[$Model->alias]['foreignKey'] . ' = ' . $FromModel->alias . '.' . $FromModel->primaryKey + $options['alias'] . '.' . $FromModel->{$relationType}[$Model->alias]['foreignKey'] . ' = ' . $FromModel->alias . '.' . $FromModel->primaryKey ); } break;