示例#1
0
 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());
     }
 }
示例#2
0
 function __call($name, $arguments)
 {
     if (empty($arguments)) {
         $descriptor = Model::getDescriptor($this->rowClass);
         $attachedMethod = $descriptor->getAttachedMethod($name);
         if (!$attachedMethod) {
             if (Inflector::isPlural($name)) {
                 $attachedMethod = $descriptor->getAttachedMethod(Inflector::toSingular($name));
             }
         }
         if ($attachedMethod) {
             $params = $attachedMethod->getParameters();
             if (count($params) === 0) {
                 return call_user_func(array($attachedMethod->object, $attachedMethod->method), $this);
             }
         }
     }
     throw new RecessException('Method "' . $name . '" does not exist on ModelSet nor is attached to ' . $this->rowClass . '.', get_defined_vars());
 }
示例#3
0
 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);
     }
 }
示例#4
0
 function testToSingular()
 {
     $this->assertEquals('thing', Inflector::toSingular('things'));
     $this->assertEquals('person', Inflector::toSingular('persons'));
     $this->assertEquals('ox', Inflector::toSingular('oxs'));
 }