7

我使用的是 MySql 数据库,所以我在 db 模式中将列类型定义为 Tinyint(1)。

在我的 ActiveRecord 中,我设置了布尔验证器。保存逻辑按预期工作。

我现在想要的是,当我调用 Yii2 REST 服务时,返回布尔字段为 true 或 false 而不是 1 或 0,因为在客户端,框架带有严格的比较 (===) 并且 1 与 true 不同。

当然,我可以在发送内容之前手动覆盖该值,或者在将其加载到模型中之前在客户端覆盖该值,但我希望有一个更简洁的解决方案。

4

1 回答 1

2

在 afterFind 中,我会将值从 0 或 1 修改为 true 或 false:

public function afterFind() {
    $this->booleanField = ($this->booleanField === 1);
    parent::afterFind();
}
于 2015-10-05T05:00:15.247 回答