Yii2 将布尔值获取为true或false,而不是1或0

Yii2 将布尔值获取为true或false,而不是1或0,yii2,yii2-model,Yii2,Yii2 Model,我使用的是MySql数据库,所以我在db模式中将列类型定义为Tinyint(1) 在我的ActiveRecord中,我设置了布尔验证器。保存逻辑按预期工作 我现在想要的是,当我调用yii2rest服务时,将布尔字段返回为true或false,而不是1或0,因为在客户端,框架带有严格的比较(==),1与true不同 当然,我可以在发送内容之前手动覆盖该值,或者在将其加载到模型之前在客户端覆盖该值,但我希望有一个更干净的解决方案。在afterFind内部,我会将值从0或1修改为true或false:

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

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

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


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

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

public function afterFind() {
    $this->booleanField = ($this->booleanField === 1);
    parent::afterFind();
}

是的,我已经这样做了,但我希望有一些“自动”的方式来做到这一点。在我的模型中,该字段被标记为布尔值,难道没有办法让JSON响应格式化程序自己知道这一点吗?我不相信有办法自动这样做,因为大多数情况下都不需要它,如果你需要这样做,你可以在afterFind上添加该功能。是的,我想你是对的。。但我至少需要一种方法来扩展具有这种行为的模型或控制器(可能只是按照您的建议扩展afterFind)。您知道如何使用“boolean”验证器集获取所有字段吗?我想您可以调用rules方法并检查它返回的数组。