PHP Laravel - Eloquent 在调用方法 json 时随机返回布尔字段,有时为 0 1,其他为 true false
Posted
技术标签:
【中文标题】PHP Laravel - Eloquent 在调用方法 json 时随机返回布尔字段,有时为 0 1,其他为 true false【英文标题】:PHP Laravel - Eloquent is returning boolean fields randomly sometimes as 0 1 and others as true false when calling the method json 【发布时间】:2019-07-03 23:08:23 【问题描述】:我正在使用 Laravel Eloquent 编写一个 REST API。当从 response()
调用 json
以返回对象时,布尔字段有时返回为 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或全部为真或假?
【问题讨论】:
那么你为什么要这样做?因为在 php 中 0 = false 和 1 = true,并且在您的代码中,您也只检查它是真还是假。 @pinoyCoder 因为我正在为使用 java 的 android 应用程序编写 REST API。一致性非常重要,因为我需要为 Object 创建一个等效类并且需要指定布尔字段的类型..和“真实”根据 Gson 与 1 不同 【参考方案1】:尝试为模型中的所有布尔字段强制转换属性。
protected $casts = [
'is_published' => 'boolean',
];
【讨论】:
我将此作为我的 clolumn 名称添加到我的模型中,然后这对我来说也很有效,谢谢【参考方案2】:使用 Laravel 访问器Docs
<?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然而,当我创建 obj 时,它返回为 truw,false以上是关于PHP Laravel - Eloquent 在调用方法 json 时随机返回布尔字段,有时为 0 1,其他为 true false的主要内容,如果未能解决你的问题,请参考以下文章
php Laravel 5 Eloquent CheatSheet #laravel #eloquent
php [Eloquent CheatSheet] Eloquent #laravel #eloquent的常见查询方法
Laravel 的 Eloquent 公共静态函数“create”在 Model.php 中发生了啥?