【发布时间】:2021-10-07 20:56:13
【问题描述】:
这是我一生中见过的最奇怪的错误,我不知道如何解释,但它正在发生。
从控制器返回模型列表时:
public function index()
{
return MyModel::orderBy('name')->get();
}
现在如果我切换到:
public function index()
{
return MyModel::orderBy('name')->get()->toArray();
}
我在浏览器中得到以下反馈:
在尝试找到不需要调用toArray() 函数的解决方案后,我发现通过覆盖jsonSerialize() 方法,如下例所示,在MyModel 类中,它可以正确转换cost_id 转为数字。
public function jsonSerialize()
{
return parent::jsonSerialize();
}
如果我将字段作为字符串放在$casts 中,它可以工作,但会将数字转换为字符串。
我的模特:
我的后台:
- PHP 5.6.40
- Laravel 5.4
- 数据库是 DBMaker
【问题讨论】:
-
您的案例是否有任何理由不设置默认值
0而不是保留它NULL并导致不可预测的行为? -
如果有什么理由来NULL,我不知道。我很快就尝试手动转换此值。
标签: php laravel laravel-5 eloquent php-5.6