我有一个查询,该查询在使用Laravel开发的REST API上返回布尔字段(顺便说一句,我在SQL Server上),几天前它返回的值为true / false,但现在返回该布尔值作为字符串:“ 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
谢谢。
答案 0 :(得分:4)
在定义以下内容时:
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
注意:由于当时无法使用别名,因此不得不将查询从dbo.visits.id
调整到V.id
。
答案 1 :(得分:1)
在使用口才模型时,定义转换有效。在您提供的代码中,您使用了查询生成器,然后根本没有使用过雄辩的模型,因此不进行任何强制转换。