这是我的表字段(打开(,但作为响应,它返回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"
}
]
}
我希望这对你有帮助👍