У меня есть объект с именем «Вид», и этот объект имеет атрибут с именем «datetime» (имя объекта и поля не имеет значения).CakePHP 3 Значение поля по умолчанию объекта
Я хотел бы установить значение по умолчанию для него внутри 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();
}
}
И когда я пытаюсь сохранить его в методе модели класса таблицы (ViewTable):
public function registerView(User $user){
$view = $this->newEntity();
$view->user = $user;
$this->save($view);
}
Ничего не происходит, мой "DateTime" поле сохраняется как '0000-00-00 00:00:00'.
Мой вопрос: Как я могу установить значение по умолчанию для объекта, поэтому, когда я вызываю $this->newEntity()
, поле поставляется с этим значением по умолчанию?
Я хотел бы сделать это с поведением, чтобы использовать код всякий раз, когда это необходимо. –
Не было бы интереснее значение по умолчанию, установленное во время создания объекта? Возможно, вам придется обрабатывать его во время бизнес-логики. –
, поэтому, я думаю, вы можете просто инициализировать свой атрибут в методе 'View :: __ construct()'. Я сделал быстрый тест, и, похоже, он работает. Я не уверен, как и когда торт вызывает конструктор, и если после этого он выполняет какие-то манипуляции с объектом, я не уверен, что это безопасный способ сделать это. – arilia