Laravel 布尔值在查询中返回“1”/“0”而不是真/假

gui*_*fix 7 php sql-server laravel eloquent laravel-query-builder

我有一个查询,它在我用 Laravel 开发的 REST API 上返回一个布尔字段(顺便说一句,我在 SQL Server 上),几天前它返回值为真/假,但现在它返回那个布尔值值作为字符串:“1”/“0”。

知道它可能是什么吗?

我尝试在我的模型上使用强制转换,如下所示:

 protected $casts = [
    'status' => 'boolean',
 ];
Run Code Online (Sandbox Code Playgroud)

这是我的查询:

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
Run Code Online (Sandbox Code Playgroud)

提前致谢。

Tim*_*wis 11

当您定义以下内容时:

protected $casts = [
  'status' => 'boolean',
];
Run Code Online (Sandbox Code Playgroud)

你在模型上定义它。但是,当您使用 启动查询时DB::table()您并未使用模型,因此绑定实际上并不适用。使用您的模型启动查询:

return Visit::leftJoin('dbo.reports AS R', 'R.id_visit', '=', 'dbo.visits.id')
->select('R.id','R.status'); // status is the boolean
Run Code Online (Sandbox Code Playgroud)

注意:由于此时别名不可用,必须将查询调整为dbo.visits.idfrom V.id