CakePHP 3创建并修改不起作用

时间:2015-06-03 18:27:31

标签: cakephp cakephp-3.0

我有一个模型(地址),其中包含以下字段:

    id: char(36) #using uuid
    name: varchar(150)
#city, state, etc here
    created: timestamp
    modified: timestamp

在我的AddressesTable类中,我有:

public function initialize(array $config)
{
    $this->table('addresses');
    $this->addBehavior('Timestamp');
}

在我的控制器中,我在编辑方法中有这个:

public function edit($id = null) {
    $addressesTable = TableRegistry::get('Addresses');
    $address = $addressesTable->get($id);
    if ($this->request->is(array('post','put'))) {
        $address = $addressesTable->patchEntity($address, $this->request->data);
        if ($addressesTable->save($address)) {
            $this->Flash->success('The address has been saved.');
            return $this->redirect(['action' => 'addresses']);
        } else {
            $this->Flash->error('The address could not be saved. Please, try again.');
        }
    }
    $this->set(compact('address'));

}

我遇到的问题是这个。根据我读过的所有内容,这应该更新'记录(它所做的),并更新'修改的' DB中的字段到当前时间戳(它也是如此)。但是,它还会更新创建的时间戳(不应该这样做)。

我在这里缺少什么?

我需要这个只更新修改后的列,而不是更新保存时创建的列。

2 个答案:

答案 0 :(得分:2)

我使用CakePHP 3.4遇到了同样的问题。我在我的Model / Table中解决了这个问题:

 public function initialize(array $config)
  {
    $this->addBehavior('Timestamp');
  }

此处有更多信息:https://book.cakephp.org/3.0/en/tutorials-and-examples/blog/part-two.html

答案 1 :(得分:-2)

是的,CakePHP会自动为创建和修改的字段执行此操作。

在MySQL中,这些字段的类型应为DATETIME