【发布时间】:2024-04-16 04:15:01
【问题描述】:
我有一个查询,它在我用 Laravel 开发的 REST API 上返回一个布尔字段(顺便说一下,我在 SQL Server 上),几天前它返回的值是真/假,但现在它将该布尔值作为字符串返回:“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
提前致谢。
【问题讨论】:
-
您将其存储为什么数据类型,
bit? -
SQL Server 没有
boolean数据类型,因此您不能有一个返回一个的查询。如果要存储值TRUE/FALSE,则必须使用varchar(5)以及值'true'和'false'。然而,大多数人使用bit,它允许值0和1(和NULL),但是它不像布尔值作用。 -
是的,存储为位
-
考虑使用 Eloquent,您可以将属性转换为布尔值 laravel.com/docs/6.x/eloquent-mutators#attribute-casting
-
我认为你需要使用 Eloquent 模型来进行演员阵容。现在您正在使用原始查询直接从表中选择。
标签: php sql-server laravel eloquent laravel-query-builder