Laravel布尔值在查询中返回“ 1” /“ 0”,而不是true / false

时间:2019-11-19 16:35:12

标签: php sql-server laravel eloquent laravel-query-builder

我有一个查询,该查询在使用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

谢谢。

2 个答案:

答案 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)

在使用口才模型时,定义转换有效。在您提供的代码中,您使用了查询生成器,然后根本没有使用过雄辩的模型,因此不进行任何强制转换。