我有一个名为“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();
}
}
当我尝试将它保存在Model Table类(ViewTable)的方法中时:
public function registerView(User $user){
$view = $this->newEntity();
$view->user = $user;
$this->save($view);
}
没有任何反应,我的“datetime”字段保存为'0000-00-00 00:00:00'。
我的问题是:如何为实体设置默认值,以便在我调用$this->newEntity()
时,该字段是否带有此默认值?
答案 0 :(得分:3)
我会在ViewsTable::beforeSave
beforeSave($event, $entity, $options)
{
if(!$entity->isNew() && !$entity->datetime)
{
$entity->datetime = Time::now();
}
return true;
}