CakePHP 3 实体默认字段值

Sam*_*rga 1 cakephp cakephp-3.0

我有一个名为“View”的实体,该实体有一个名为“datetime”的属性(实体和字段的名称不相关)。

我想在 CakePHP 中为其设置默认值,而不是在数据库中定义它。

在我的实体类上我定义了:

namespace App\Model\Entity;
use Cake\ORM\Entity;
use Cake\I18n\Time;

class View extends Entity
{

    protected $_accessible = [
        '*' => true,
        'id' => false,
    ];

    protected function _getDatetime($datetime)
    {
        return Time::now();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试将其保存在模型表类(ViewTable)的方法中时:

public function registerView(User $user){
    $view = $this->newEntity();
    $view->user = $user;
    $this->save($view);
}
Run Code Online (Sandbox Code Playgroud)

什么也没发生,我的“日期时间”字段保存为“0000-00-00 00:00:00”。

我的问题是:如何为实体设置默认值,以便当我调用$this->newEntity()该字段时带有此默认值?

ari*_*lia 5

我会在ViewsTable::beforeSave

beforeSave($event, $entity, $options)
{
    if(!$entity->isNew() && !$entity->datetime)
    {
        $entity->datetime = Time::now();
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)