Example #1
0
 public function save($instance)
 {
     $this->propertiesInstance = $this->getPropertiesInstance($instance);
     $this->propertiesInstance['alias'] = 'a';
     $this->Model->setPropertiesInstance($this->propertiesInstance, $this);
     $primary = $this->propertiesInstance['primary'];
     $data = array();
     foreach ($this->propertiesInstance['fields'] as $property) {
         $field = $property->name;
         $data[$field] = $instance->{$field};
     }
     // Se verifica si el modelo tiene el metodo getFieldsSluggable
     if ($this->propertiesInstance['has_sluggable']) {
         // Si en la data existe un campo slug se utiliza en lugar de crearlo
         if (!array_key_exists('slug', $data)) {
             $slug = '';
             $fields_slug = $instance->getFieldsSluggable();
             foreach ($fields_slug as $field_slug) {
                 $slug .= $data[$field_slug] . '-';
             }
             $data['slug'] = \Kodazzi\Tools\StringProcessor::slug($slug);
         }
     }
     // Verifica si el campo primary existe y contiene algun valor
     if (array_key_exists($this->propertiesInstance['primary'], $data) && $data[$this->propertiesInstance['primary']]) {
         unset($data[$this->propertiesInstance['primary']]);
         // Intentara actualizar la instancia en la bd
         // Verifica que exista el registro en la bd
         if ($this->Model->exist($instance->{$primary})) {
             // Retorna la cantidad de filas afectadas.
             $result = $this->Model->update($data, $instance->{$primary});
             $this->identifier = $instance->{$primary};
             return true;
         }
         throw new \Exception('El objecto con ' . $primary . ' = ' . $instance->{$this}->propertiesInstance['primary'] . ' no fue encontrado en la BD.');
     }
     $result = $this->Model->insert($data);
     return $result ? true : false;
 }