API 资源空白
API Resource comes blank
在我编写的 API 项目中,我在 2 个表中有数据,“follows”和“followers”。我想用Resource自定义,导出为json,但是用户信息是空白的。你认为是什么原因?
FollowerResource
public function toArray($request)
{
return [
'id' => $this->id,
'user' => new UserResource($this->user),
];
}
关注资源
public function toArray($request)
{
return [
'id' => $this->id,
'user' => new UserResource($this->user),
];
}
用户控制器
public function followUser() {
$follows = Follows::all();
return response()->json(FollowResource::collection($follows),200);
}
public function followerUser() {
$followers = Followers::all();
return response()->json(FollowerResource::collection($followers),200);
}
输出
关注和追随者路线
{
"id": 1,
"user": null
},
{
"id": 2,
"user": null
},
{
"id": 3,
"user": null
},
{
"id": 4,
"user": null
},
{
"id": 5,
"user": null
},
{
"id": 6,
"user": null
}
在此先感谢您的帮助。祝你身体健康。
更新
用户资源
public function toArray($request)
{
return [
'user_id' => $this->id,
'email' => $this->email,
'description' => $this->description,
'first_name' => $this->first_name,
'last_name' => $this->last_name,
'full_name' => $this->first_name . ' ' . $this->last_name,
];
}
更新二
关注者数据
Illuminate\Database\Eloquent\Collection {#1240 ▼
#items: array:11 [▼
0 => App\Models\Followers {#1241 ▼
#connection: "mysql"
#table: "followers"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:4 [▼
"id" => 1
"user_id" => 3
"created_at" => "2002-08-01 03:26:41"
"updated_at" => "2020-08-13 11:32:28"
]
#original: array:4 [▶]
#changes: []
#casts: []
#classCastCache: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
#guarded: array:1 [▶]
}
1 => App\Models\Followers {#1242 ▶}
2 => App\Models\Followers {#1243 ▶}
3 => App\Models\Followers {#1244 ▶}
4 => App\Models\Followers {#1245 ▶}
5 => App\Models\Followers {#1246 ▶}
6 => App\Models\Followers {#1247 ▶}
7 => App\Models\Followers {#1248 ▶}
8 => App\Models\Followers {#1249 ▶}
9 => App\Models\Followers {#1250 ▶}
10 => App\Models\Followers {#1251 ▶}
]
}
将您的关注资源更改为此
public function toArray($request)
{
return [
'id' => $this->id,
'user' => new UserResource($this->user_id),
];
}
在您的 Follow Resource 文件中添加这一行
public function toArray($request)
{
$user = User::find($this->user_id);
return [
'id' => $this->id,
'user' => new UserResource($user),
];
}
如果有帮助请告诉我
在我编写的 API 项目中,我在 2 个表中有数据,“follows”和“followers”。我想用Resource自定义,导出为json,但是用户信息是空白的。你认为是什么原因?
FollowerResource
public function toArray($request)
{
return [
'id' => $this->id,
'user' => new UserResource($this->user),
];
}
关注资源
public function toArray($request)
{
return [
'id' => $this->id,
'user' => new UserResource($this->user),
];
}
用户控制器
public function followUser() {
$follows = Follows::all();
return response()->json(FollowResource::collection($follows),200);
}
public function followerUser() {
$followers = Followers::all();
return response()->json(FollowerResource::collection($followers),200);
}
输出
关注和追随者路线
{
"id": 1,
"user": null
},
{
"id": 2,
"user": null
},
{
"id": 3,
"user": null
},
{
"id": 4,
"user": null
},
{
"id": 5,
"user": null
},
{
"id": 6,
"user": null
}
在此先感谢您的帮助。祝你身体健康。
更新
用户资源
public function toArray($request)
{
return [
'user_id' => $this->id,
'email' => $this->email,
'description' => $this->description,
'first_name' => $this->first_name,
'last_name' => $this->last_name,
'full_name' => $this->first_name . ' ' . $this->last_name,
];
}
更新二
关注者数据
Illuminate\Database\Eloquent\Collection {#1240 ▼
#items: array:11 [▼
0 => App\Models\Followers {#1241 ▼
#connection: "mysql"
#table: "followers"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:4 [▼
"id" => 1
"user_id" => 3
"created_at" => "2002-08-01 03:26:41"
"updated_at" => "2020-08-13 11:32:28"
]
#original: array:4 [▶]
#changes: []
#casts: []
#classCastCache: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
#guarded: array:1 [▶]
}
1 => App\Models\Followers {#1242 ▶}
2 => App\Models\Followers {#1243 ▶}
3 => App\Models\Followers {#1244 ▶}
4 => App\Models\Followers {#1245 ▶}
5 => App\Models\Followers {#1246 ▶}
6 => App\Models\Followers {#1247 ▶}
7 => App\Models\Followers {#1248 ▶}
8 => App\Models\Followers {#1249 ▶}
9 => App\Models\Followers {#1250 ▶}
10 => App\Models\Followers {#1251 ▶}
]
}
将您的关注资源更改为此
public function toArray($request)
{
return [
'id' => $this->id,
'user' => new UserResource($this->user_id),
];
}
在您的 Follow Resource 文件中添加这一行
public function toArray($request)
{
$user = User::find($this->user_id);
return [
'id' => $this->id,
'user' => new UserResource($user),
];
}
如果有帮助请告诉我