2015-10-04 113 views
6

我正在使用MySql数据库,因此我在数据库模式中将列类型定义为Tinyint(1)。获取布尔值为true或false,而不是1或0

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

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

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

回答

1

里面一个afterFind我将修改的值从0或1为true或false:

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

是的,我已经做了,但我希望这样的一些“自动”方式。该字段在我的模型中被标记为布尔值,是不是有办法让JSON Response Formatter自己知道? – edrian

+0

我不相信有一种方法可以自动完成,因为它不是大多数情况下需要的,如果您需要这样做,您可以在afterFind上添加该功能。 – marche

+1

是的,我想你是对的..但我至少想要一种方法来扩展模型或控制器的这种行为(也许只是延伸afterFind,如你所建议的)。你知道如何获得所有与“布尔”验证器设置的领域? – edrian

相关问题