如何暂时取消behavior,来自己赋值

技巧库 · light · 于 5年前 发布 · 3578 次阅读
class User extends \yii\db\ActiveRecord
{
    public function behaviors()
    {
        return [
            //注意,这里我们需要指定behavior名称,以便我们需要时dettach掉
            '_timestamp' => [
                'class' => 'yii\behaviors\TimestampBehavior'
            ]
        ];
    }       
}

使用时, 我不想使用默认的TimestampBehavior来赋值:

$user = new User;
...
$user->detachBehavior('_timestamp');
$user->created_at = 'your logic to generate time';
$user->updated_at = 'same';

$user->insert();

所以灵活的是, 当我们不需要某个behavior时, 我们可以随时把它fire掉!


如果这篇文章对您有帮助,不妨微信小额赞助我一下,让我有动力继续写出高质量的教程。

共收到 4 条回复 behaviors Yii2
forecho#15年前 0 个赞

下回我要试试

forecho#25年前 0 个赞

一定要自己自定义一个 behaviors 吗? 如果

public function behaviors()
{
    return [
        'timestamp' => [
            'class' => 'yii\behaviors\TimestampBehavior',
        ],
    ];
}


$user = new User;
...
$user->dettachBehavior('timestamp');

这样可以不?

light#35年前 0 个赞

@forecho #2楼 我和例子一样啊。。。

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册