Sunday, February 9, 2014

Date modified isn't null when adding a record

Normally, when you add a record with a form to a database table, CakePHP will automatically fill in the "created" field in de database with the current date & time. It works for my table called "attractions" (model "Attraction").

But now, strange things are happening. When I add a record for:

  • model "AttractionProperty", table "attraction_properties"
  • model "AttractionTypes", table "attraction_types"
  • model "AttractionPropertyLink", table "attraction_properties_links"
  • ...

... both the fields "created" and "modified" are filled in. I checked if the id of my model is set in the add action ($this->request->id), but it says "false".

Here's my controller code:

public function add()
{
    if ($this->request->is('post')) {
        $this->AttractionProperty->create();
        if ($this->AttractionProperty->save($this->request->data)) { // data array opslaan
            $this->Session->setFlash(__('De eigenschap werd succesvol toegevoegd.'), 'default', array(
                'class' => 'alert alert-success'
            ));
            return $this->redirect(array(
                'action' => 'index'
            ));
        }
        $this->Session->setFlash(__('Er is een fout tijdens het toevoegen van de eigenschap opgetreden.'), 'default', array(
            'class' => 'alert alert-danger'
        ));
    }
}
public function edit($id = null)
{
    if (!$id) {
        throw new NotFoundException(__('Ongeldige eigenschap.'));
    }
    $property = $this->AttractionProperty->findById($id);
    if (!$property) {
        throw new NotFoundException(__('Ongeldige eigenschap.'));
    }
    if ($this->request->is(array('post', 'put'))) {
        $this->AttractionProperty->id = $id;
        if ($this->AttractionProperty->save($this->request->data)) { // data array opslaan
            $this->Session->setFlash(__('De eigenschap werd succesvol bewerkt.'), 'default', array(
                'class' => 'alert alert-success'
            ));
            return $this->redirect(array(
                'action' => 'index'
            ));
        }
        $this->Session->setFlash(__('Er is een fout tijdens het bewerken van de eigenschap opgetreden.'), 'default', array(
            'class' => 'alert alert-danger'
        ));
    }
    if (!$this->request->data) {
        $this->request->data = $property;
    }
}


I did read http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-save-array-data-null-boolean-validate-true-array-fieldlist-array to retrieve more info, but it seems that I've done everything to the rules. I also know that you can do 

if ($this->AttractionProperty->save($this->request->data(array('modified' => false)))) {
    
}


when you save in the "add" action, but I realy want to know what's the underlying problem ;)

Is this a common problem or what could be the reason of this behavior?

--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
 
---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/groups/opt_out.

No comments: