Example #1
0
 /**
  * *-to-many
  *
  * @param $relation_name
  * @param Model $object
  * @param $create_relation
  * @throws Wave\Exception
  */
 protected function _addRelationObject($relation_name, Model $object, $create_relation = true, $join_data = array())
 {
     $this->_data[$relation_name][] = $object;
     $relation_data = $this->_getRelation($relation_name);
     if ($object !== null && $create_relation) {
         switch ($relation_data['relation_type']) {
             case Relation::MANY_TO_MANY:
                 if (!$object->_isLoaded()) {
                     $object->save();
                 }
                 $related_class_name = $relation_data['related_class'];
                 $rc = new $related_class_name();
                 foreach ($join_data as $key => $value) {
                     $rc->{$key} = $value;
                 }
                 foreach ($relation_data['target_relation']['local_columns'] as $position => $local_column) {
                     $rc->{$local_column} = $object->{$relation_data['target_relation']['related_columns'][$position]};
                 }
                 $object->_setParentObject($rc);
                 //Deliberate non-break here so the -many logic flows on with $object reassigned.
                 $object = $rc;
             case Relation::ONE_TO_MANY:
                 foreach ($relation_data['local_columns'] as $position => $local_column) {
                     $object->{$relation_data['related_columns'][$position]} = $this->_data[$local_column];
                 }
                 $object->_setParentObject($this);
                 break;
         }
         $object->save();
     }
 }
Example #2
0
 /**
  * Save an object to the database (either INSERT or UPDATE)
  *
  * @param Model $object
  *
  * @return bool
  */
 public static function save(Model &$object)
 {
     if ($object->_isLoaded()) {
         if ($object->_isDirty()) {
             return self::update($object);
         }
     } else {
         return self::insert($object);
     }
 }