0
"View"という名前のエンティティがあり、このエンティティには "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);
}
何も、私の「日時」が起こりませんフィールドは「0000-00-00 00:00:00」として保存されます。
私の質問は、$this->newEntity()
というフィールドにこのデフォルト値が設定されているため、エンティティのデフォルト値を設定するにはどうすればいいですか?
でそれを行うだろう。 –
オブジェクト作成時にデフォルト値が設定されているのは面白いでしょうか?ビジネスロジック中にそれを処理する必要があるかもしれません。 –
だから、 'View :: __ construct()'メソッドで属性を単純に初期化することができます。私はすぐにテストをしましたが、うまくいくようです。私はケーキがいつ、どのようにコンストラクタを呼び出すのかわかりませんし、それがエンティティに何らかの操作を行った場合、それが安全な方法かどうかわかりません。 – arilia