JSON代表bit/boolean字段显示字符串类型

JSON shows string type in behalf of bit/boolean field

{
  "Status": true,
  "Message": "Roles retrieved successfully",
  "Data": [
    {
      "RoleID": 1,
      "Role": "Super Admin",
      "IsPredefined": "1",
      "IsActive"    : "1",
    }
  ]
}

我正在以 json 格式获取以上结果。我正在使用以下查询从 MySql 数据库中获取数据。

我正在使用模型,我的代码是:RoleModel::all()

我正在使用 PHP-Laravel 5.3

有什么方法可以使结果集如下所示。

{
  "Status": true,
  "Message": "Roles retrieved successfully",
  "Data": [
    {
      "RoleID": 1,
      "Role": "Super Admin",
      "IsPredefined": true,
      "IsActive"    : true,
    }
  ]
}

问题出在 IsPredefined 中。我想检索它的布尔类型。在数据库中它的类型是 bit

也许你可以使用if()功能,所以

Select RoleID, Role, if(IsPredefined=1,'true','false') as IsPredefined form tblrole;

如果您使用的是 Eloquent 模型,则可以使用 Accessors and Mutators,因此请在 eloquent 模型中添加访问器方法。

public function getIspredefinedAttribute($value)
{
    return ($value==1)?true:false;
}

Attribute Casting

我的模型如下

class RoleModel extends Model {

    public $table = 'tblrole';
    public $primaryKey = 'RoleID';
    public $timestamps = true;

}

应该像下面这样

class RoleModel extends Model {

    public $table = 'tblrole';
    public $primaryKey = 'RoleID';
    public $timestamps = true;

    protected $casts = [
        'IsPredefined'  => 'boolean'
    ];
 }

Moreover, Database table must have datatype = 'BIT' for boolean values so that it may occupy only 0 or 1 values.