8

出于好奇,我开始使用 CakePHP3.0。为了熟悉 CakePHP3.0 的新特性,我参考了官网的博客教程(http://book.cakephp.org/3.0/en/tutorials-and-examples/blog/blog.html)。我所做的只是简单地复制和过去那里的源代码。一切正常,除了“创建”和“修改”字段没有被保存。他们只是保持NULL。我已经确认此功能在 CakePHP 2.4.6 中运行良好。下面是博客教程的表定义和函数 add()。

CREATE TABLE articles (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(50),
    body TEXT,
    created DATETIME DEFAULT NULL,
    modified DATETIME DEFAULT NULL
);

public function add(){
    $article = $this->Articles->newEntity($this->request->data);
    if($this->request->is("post")){
        if($this->Articles->save($article)){
            $this->Session->setFlash("Success!");
            return $this->redirect(["action"=>"index"]);
        }
        $this->Session->setFlash("Fail!");
    }
    $this->set(compact("article"));
}
4

2 回答 2

8

您需要在 3.0中添加TimestampBehavior 。

https://github.com/cakephp/cakephp/blob/3.0/src/Model/Behavior/TimestampBehavior.php

于 2014-04-04T10:14:52.937 回答
0

在博客教程的第 2 部分中,您似乎错过了文章模型的创建:http: //book.cakephp.org/3.0/en/tutorials-and-examples/blog/part-two.html#create-an -文章模型

// src/Model/Table/ArticlesTable.php

namespace App\Model\Table;

use Cake\ORM\Table;

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

包含“时间戳”行为是控制这些时间戳字段并使它们保持最新的原因。

于 2015-07-05T20:23:00.177 回答