Я использую Laravel Eloquent для написания REST API. При вызове json из response() для возврата объекта логические поля иногда возвращаются как 0/1, а другие как false/true. Я хотел бы унифицировать формат и сделать все как 0,1 или как false,true вместо того, чтобы быть случайным
вот пример кода:
public function show($id)
{
$obj = MyObject::findOrFail($id);
return response()->json($obj,200);
}
этот возврат 0,1
и этот код при создании объекта возвращает true, false не только для статуса, но и для логических значений в $obj
return response()->json([
'status' => (bool) $obj,
'data' => $obj,
'message' => $obj ? 'new obj created!' : 'an error has occurred'
], 201);
Итак, как сделать их все 0 и 1 или все истинными или ложными?
@pinoyCoder, потому что я пишу REST API для приложения ANDROID, которое использует java.. согласованность очень важна, поскольку мне нужно создать эквивалентный класс для объекта и указать тип логического поля. НЕ совпадает с 1 согласно Гсону






Использовать аксессор Laravel Документы
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
public function getIsPublishedAttribute($value)
{
return $value == 1 ? true : false;
}
}
Он всегда будет возвращаться на основе вашего $value.
но я не хочу всегда возвращать true, и моя проблема не в статусе, а в логических полях внутри $obj.. например, у меня есть поля is_published.. в первом коде он возвращается как 0 и 1, но когда я создаю объект, он возвращается как правда, ложь
Попробуйте свойство casts для всех логических полей в модели.
protected $casts = [
'is_published' => 'boolean',
];
я добавил это для имени моего столбца в свою модель, тогда это сработало и для меня, спасибо
Ну почему ты хочешь? так как в php 0 = false и 1 = true, и в вашем коде вы только проверяете, является ли он истинным или ложным.