Ad

Laravel Boolean Returns "1"/"0" Instead Of True/false In Query

I have a query that returns a boolean field (by the way, I'm on an SQL Server) on my REST API developed with Laravel and a few days ago it was returning the value as true/false, but now it returns that boolean value as String: "1"/"0".

Any idea on what could it be?

I tried using casting on my Model like this:

 protected $casts = [
    'status' => 'boolean',
 ];

This is my query:

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

Thanks in advance.

Ad

Answer

When you're defining the following:

protected $casts = [
  'status' => 'boolean',
];

You're defining it on the model. However, when you initiate your query using DB::table(), you're not using the model, so the binding doesn't actually apply. Initiate your query using your model:

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

Note: Had to adjust query to dbo.visits.id from V.id due to aliasing not being available at that point.

Ad
source: stackoverflow.com
Ad