예제 #1
0
 protected function break_relation($object)
 {
     if (isset($this->options['through'])) {
         $rel_table = $this->options['through'];
         $local_field = $this->get_local_field();
         $foreign_field = $this->get_foreign_field($this->foreign_model);
         $local_id = $this->local_model->primary_key_value();
         $foreign_id = $object->primary_key_value();
         //TODO: fix it to a more generic way
         if (isset($this->options['module'])) {
             $module = $this->options['module'];
             DbCommand::execute("DELETE FROM `{$rel_table}` WHERE `{$local_field}` = '{$local_id}' and `{$foreign_field}` = '{$foreign_id}' and `module` = '{$module}'");
         } else {
             DbCommand::execute("DELETE FROM `{$rel_table}` WHERE `{$local_field}` = '{$local_id}' and `{$foreign_field}` = '{$foreign_id}'");
         }
     } else {
         $local_field = $this->get_foreign_field($this->local_model);
         $object->{$local_field} = null;
         $object->save();
     }
 }
예제 #2
0
 private function update()
 {
     $this->write_magic_time('updated_at');
     $pk = $this->primary_key();
     $pk_value = $this->sanitize($this->{$pk});
     $table = $this->table();
     $fields = $this->map_real_fields();
     $sql_set = array();
     foreach ($fields as $key => $value) {
         $sql_set[] = "`{$key}` = " . $this->prepare_for_value($value);
     }
     $sql_set = implode(",", $sql_set);
     $sql = "UPDATE `{$table}` SET {$sql_set} WHERE `{$pk}` = '{$pk_value}';";
     DbCommand::execute($sql);
 }