Adonisjs如何在模型中将boolean转换为false和true,而不是0或1



这是我的表字段(打开(,但作为响应,它返回0 1,但我想要true-false而不是0 1

我正在使用adonis MySQL

table.boolean('open'(.notNullable((.defaultTo(true(.comment('true=open,false=close'(

const模型=使用("模型"(

class Markup extends Model {
static boot() {
super.boot()
this.addTrait('@provider:Lucid/SoftDeletes')

}
static getColumns() {
return ['assignee_id', 'editor_details', 'visibility', 'image_url', 'priority', 'open']
}
comments() {
return this.hasMany('App/Models/Comment', 'id', 'markup_id')
}
assignee() {
return this.belongsTo("App/Models/User", "assignee_id", "id")
}
created_by() {
return this.belongsTo("App/Models/User", 'created_by_id', 'id')
}
resolved_by() {
return this.belongsTo("App/Models/User", 'resolved_by_id', 'id')
}

}

module.exports=标记

这只是一个简单的修复。你只需要在你的专栏中这样做。

@column({ serialize: Boolean })

正如@asad jivani所说:

布尔型在MySQL中不是一种不同的数据类型;它只是tinyint的同义词。您可以在模型中编写一个after钩子,将1/0转换为true/false。

在这些情况下,我使用laravel/lumen的属性调用$casts,这是在模型中指定的。

下面是一个没有$cast-to-isdraft字段的示例。

JSON响应:

{
"areas": [
{
"id": 1,
"is_draft": 1,
"title": "Example"
}
]
}

为了将文件is_draft转换为true或false,我刚刚在模型中添加了这个。

<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class Area extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $table = 'areas';
protected $guarded = [];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $casts = [
'is_draft' => 'boolean',
];
}

这是解析后的JSON响应:

{
"areas": [
{
"id": 1,
"is_draft": true,
"title": "Example"
}
]
}

我希望这对你有帮助👍

最新更新