如何在laravel中为api后端返回JSON数据之前定义数据类型
Posted
技术标签:
【中文标题】如何在laravel中为api后端返回JSON数据之前定义数据类型【英文标题】:How to define the data type before returning JSON data for api backend in laravel 【发布时间】:2019-02-18 02:43:36 【问题描述】:我开发了一个用于移动设备的 api 后端。在我将代码放在另一个域中开始部署之前,这一切都很好。突然我注意到,user_id
数据类型之一已更改为string
,之前是int
,并且一切正常。
这就是我在 laravel 控制器中所做的事情
$clubs=Club::with(['users' => function($q)
$q->select('id','profilePic');
])->with('leagueCount')
->get();
return response()->json([
'success' => true,
'clubs' => $clubs,
],200);
它给了我这样的结果
success: true,
clubs: [
id: 8,
user_id: "34", // this shouldn't be a string. It should be int.
clubName: "PADELCENTER",
clubDesc: "Testclub",
color: "#424242",
logo: "logotouse.png",
created_at: "2018-05-12 07:44:40",
updated_at: "2018-05-12 07:44:40",
users:
id: 34,
profilePic: "20KdcnX5Gb2dSfunwT8JtmBvcVopDmUwKmQ7XeUI.png"
,
league_count: [
id: 31,
club_id: "8",
total: "1"
]
,
你可以看到 user_id 是一个string
它应该是int
无论如何我在模型中或某处强制设置数据类型?
[注意:user_id 是 int 并且在数据库中作为用户表的外键是无符号的。]
非常感谢。
【问题讨论】:
***.com/questions/24528062/… 你应该试试看这个,***.com/questions/31527050/…。我希望它有所帮助。 【参考方案1】:你可以使用 Eloquent mutators 将属性转换为整数,如下所示:
class Club extends Model
protected $casts = [
'user_id' => 'integer',
];
【讨论】:
非常感谢 :)【参考方案2】:有两种方法可以解决这个问题
在您的模型中,您可以像
一样从数据库中转换输出$casts = [
'user_id' => 'int'
];
或者你可以使用资源php artisan make:resource Club
然后你可以简单地使用toArray
方法
public function toArray($request)
return [
// do casting in here
];
【讨论】:
以上是关于如何在laravel中为api后端返回JSON数据之前定义数据类型的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 中为用户显示 JSON 数据可读方式?
如何使用 PHP/Laravel 返回 Json 数据数组?
如何让 Laravel 返回 JSON REST API 的自定义错误