目次
CakePHPのセッターを使って保存する方法
こんな感じのDBカラムがあるとして
first_name
last_name
こんな感じにEntityに書いておく
protected $_virtual = [
'full_name',
]
protected function _setFullName($fullName)
{
$this->set('first_name', expload(' ', $fullName)[1]);
$this->set('last_name', expload(' ', $fullName)[0]);
}
これを実行すると
$user = $this->Users->newEntity([
'full_name' => '椎名 林檎'
]);
$this->Users->save($user);
こんな風に保存ができるんですが、
first_name = '椎名'
last_name = '林檎'
私の場合ここで、
保存ができない事象が発生しまして、なんだ!!
となりましたとさ。
保存ができない原因
アクセシブルに存在しなかったからでした。
バーチャルフィールドも入れないとダメみたいです。
私は面倒だったのでアクセシブルごと消しました。
protected $_accessible = [
full_name => true,
]