ビヘイビアでバリデーション前にデフォルト値を設定するようにしてみた.
MySQL で一応動作確認してる.
<?php
use Phalcon\Db\RawValue;
use Phalcon\Mvc\Model\Behavior;
use Phalcon\Mvc\Model\BehaviorInterface;
/**
* オプションで指定した値が '' や null で合った場合に DB のデフォルト値を入れるようにするビヘイビア
*/
class DefaultValue extends Behavior implements BefaviorInterface
{
public function notify($type, $model)
{
if ($type === 'beforeValidation')
{
foreach ((array)$this->getOptions() as $property) {
if ($model->$property === '' || $model->$property === null) {
$model->$property = new RawValue('default');
}
}
}
}
}
使用例
<?php
use Phalcon\Mvc\Model;
class SomeModel extends Model
{
public $name;
public $hobby;
public function initialize()
{
$this->addBehavior(new DefaultValue(array('name', 'hobby')));
}
}
実行例はあとで書くかも.