2016-09-15 65 views
0
{ 
    "Status": true, 
    "Message": "Roles retrieved successfully", 
    "Data": [ 
    { 
     "RoleID": 1, 
     "Role": "Super Admin", 
     "IsPredefined": "1", 
     "IsActive" : "1", 
    } 
    ] 
} 

我以json格式獲取上述結果。我正在使用下面的查詢來從MySql數據庫中獲取數據。JSON顯示代表比特/布爾字段的字符串類型

我使用的型號和我的代碼是:RoleModel::all()

我使用PHP-Laravel 5.3

有沒有什麼辦法讓中的結果如下圖所示。

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

問題出現在IsPredefined中。我想要檢索它的布爾類型。在數據庫中它的類型是位

回答

0

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' 
    ]; 
} 

此外,數據庫中的表必須具有數據類型=「BIT」爲布爾值 ,使得它可以僅佔據0或1的值。

0

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

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

如果您使用的雄辯模型,你可以使用Accessors and Mutators所以在你的雄辯模型添加訪問方法。

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

我正在使用模型,我的代碼是:'RoleModel :: all()'所以,使用此解決方案是不可行的。 – Pankaj

+0

您可以使用Accessors。看到更新的答案。 – follio