From 0146596647b359d5f9afafbd9cd58e1b955bc0ac Mon Sep 17 00:00:00 2001 From: Carsten Brandt Date: Tue, 29 Oct 2013 12:41:24 +0100 Subject: [PATCH] add relationClassName to AR to allow different relation classes ... for different dbms --- framework/yii/db/ActiveRecord.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/framework/yii/db/ActiveRecord.php b/framework/yii/db/ActiveRecord.php index 79d5146..be44a07 100644 --- a/framework/yii/db/ActiveRecord.php +++ b/framework/yii/db/ActiveRecord.php @@ -93,6 +93,10 @@ class ActiveRecord extends Model const OP_ALL = 0x07; /** + * @var string the name of the class to use for relations. + */ + protected $relationClassName = 'yii\\db\\ActiveRelation'; + /** * @var array attribute values indexed by attribute names */ private $_attributes = []; @@ -384,7 +388,7 @@ class ActiveRecord extends Model return $this->_related[$t]; } $value = parent::__get($name); - if ($value instanceof ActiveRelation) { + if ($value instanceof $this->relationClassName) { return $this->_related[$t] = $value->multiple ? $value->all() : $value->one(); } else { return $value; @@ -474,7 +478,7 @@ class ActiveRecord extends Model */ public function hasOne($class, $link) { - return new ActiveRelation([ + return new $this->relationClassName([ 'modelClass' => $class, 'primaryModel' => $this, 'link' => $link, @@ -512,7 +516,7 @@ class ActiveRecord extends Model */ public function hasMany($class, $link) { - return new ActiveRelation([ + return new $this->relationClassName([ 'modelClass' => $class, 'primaryModel' => $this, 'link' => $link, @@ -1264,7 +1268,7 @@ class ActiveRecord extends Model $getter = 'get' . $name; try { $relation = $this->$getter(); - if ($relation instanceof ActiveRelation) { + if ($relation instanceof $this->relationClassName) { return $relation; } } catch (UnknownMethodException $e) {