function __call($name, $arguments) { $relationship = Model::getRelationship($this->rowClass, $name); if ($relationship === false && Inflector::isPlural($name)) { $name = Inflector::toSingular($name); $relationship = Model::getRelationship($this->rowClass, $name); if (!$relationship instanceof BelongsToRelationship) { $relationship = false; } } if ($relationship !== false) { return $relationship->selectModelSet($this); } else { throw new RecessException('Relationship "' . $name . '" does not exist.', get_defined_vars()); } }
function removeFrom(Model $model, Model $relatedModel) { if (!isset($this->through)) { $foreignKey = $this->foreignKey; $relatedModel->{$foreignKey} = ''; $relatedModel->save(); return $model; } else { $through = new $this->through(); $localPrimaryKey = Model::primaryKeyName($model); $localForeignKey = $this->foreignKey; $through->{$localForeignKey} = $model->{$localPrimaryKey}; $relatedPrimaryKey = Model::primaryKeyName($this->through); $relatedForeignKey = Model::getRelationship($this->through, Inflector::toSingular($this->name))->foreignKey; $through->{$relatedForeignKey} = $relatedModel->{$relatedPrimaryKey}; $through->find()->delete(false); } }