Laravel 布尔值 returns “1”/“0” 而不是查询中的 true/false
Laravel boolean returns "1"/"0" instead of true/false in query
我有一个查询 returns 我的 REST API 上的布尔字段(顺便说一句,我在 SQL 服务器上)是用 Laravel 开发的几天前它返回的值是 true/false,但现在它 returns 那个布尔值是字符串:“1”/“0”。
知道它是什么吗?
我试过像这样在我的模型上使用铸造:
protected $casts = [
'status' => 'boolean',
];
这是我的查询:
return DB::table('dbo.visits as V')
->leftJoin('dbo.reports AS R', 'R.id_visit', '=', 'V.id')
->select('R.id','R.status'); // status is the boolean
提前致谢。
当您定义以下内容时:
protected $casts = [
'status' => 'boolean',
];
您正在模型上定义它。但是,当您使用 DB::table()
、 启动查询时,您并未使用模型 ,因此绑定实际上并不适用。使用您的模型发起查询:
return Visit::leftJoin('dbo.reports AS R', 'R.id_visit', '=', 'dbo.visits.id')
->select('R.id','R.status'); // status is the boolean
注意:由于此时别名不可用,不得不将查询从 V.id
调整为 dbo.visits.id
。
当您使用 Eloquent 模型时,可以定义转换。在您提供的代码中,您使用了查询构建器,然后根本没有使用 Eloquent 模型,因此没有进行任何转换。
您想做的是将此功能添加到您的模型中。每次使用模型检索数据时,都会调用与属性名称匹配的函数,将数据库中的原始数据转换为所需的格式。
public function getStatusAttribute($value)
{
return $value ? 'Yes' : 'No';
}
我有一个查询 returns 我的 REST API 上的布尔字段(顺便说一句,我在 SQL 服务器上)是用 Laravel 开发的几天前它返回的值是 true/false,但现在它 returns 那个布尔值是字符串:“1”/“0”。
知道它是什么吗?
我试过像这样在我的模型上使用铸造:
protected $casts = [
'status' => 'boolean',
];
这是我的查询:
return DB::table('dbo.visits as V')
->leftJoin('dbo.reports AS R', 'R.id_visit', '=', 'V.id')
->select('R.id','R.status'); // status is the boolean
提前致谢。
当您定义以下内容时:
protected $casts = [
'status' => 'boolean',
];
您正在模型上定义它。但是,当您使用 DB::table()
、 启动查询时,您并未使用模型 ,因此绑定实际上并不适用。使用您的模型发起查询:
return Visit::leftJoin('dbo.reports AS R', 'R.id_visit', '=', 'dbo.visits.id')
->select('R.id','R.status'); // status is the boolean
注意:由于此时别名不可用,不得不将查询从 V.id
调整为 dbo.visits.id
。
当您使用 Eloquent 模型时,可以定义转换。在您提供的代码中,您使用了查询构建器,然后根本没有使用 Eloquent 模型,因此没有进行任何转换。
您想做的是将此功能添加到您的模型中。每次使用模型检索数据时,都会调用与属性名称匹配的函数,将数据库中的原始数据转换为所需的格式。
public function getStatusAttribute($value)
{
return $value ? 'Yes' : 'No';
}