查询与内部联接返回错误的ID
问题描述:
我有这个API iOS的社交媒体应用程序在Laravel建造和我一直有与进料段,雄辩的问题Feed的代码给了我每个帖子的错误ID。
public function feed(){
if (request()->has('page')) {
$pagesize = 20;
$query = Posts::join('clase_user', function ($join) {
$user = JWTAuth::parseToken()->authenticate();
$join->on('clase_user.clase_id', '=', 'posts.clase_id')
->where('clase_user.user_id', '=', $user->id);
})
->with('user')
->skip(((int)request()->get('page') - 1) * $pagesize)
->take($pagesize)->get();
return $query;
}else{
return response()->json(['error' => 'Page not specified'], 500);
}
}
的回报是:
{
"posts": [
{
"id": 3,
"user_id": 1,
"clase_id": 1,
"thumbNail": null,
"text": "Hola Chicos",
"archivo": null,
"created_at": "2017-07-20 00:00:00",
"updated_at": "2017-07-20 00:00:00",
"user": {
"id": 1,
"name": "Juan Carlos",
"about": "Hola me llamo Juan Carlos",
"handler": "Juantvz50",
"pp": null,
"verify": 1,
"email": "[email protected]",
"deleted_at": null,
"LoginId": null,
"created_at": "2017-07-20 23:52:28",
"updated_at": "2017-07-20 23:52:28"
}
},
{
"id": 1,
"user_id": 1,
"clase_id": 2,
"thumbNail": null,
"text": "Que pex Prrrro",
"archivo": null,
"created_at": "2017-07-20 00:00:00",
"updated_at": "2017-07-20 00:00:00",
"user": {
"id": 1,
"name": "Juan Carlos",
"about": "Hola me llamo Juan Carlos",
"handler": "Juantvz50",
"pp": null,
"verify": 1,
"email": "[email protected]",
"deleted_at": null,
"LoginId": null,
"created_at": "2017-07-20 23:52:28",
"updated_at": "2017-07-20 23:52:28"
}
},
{
"id": 3,
"user_id": 1,
"clase_id": 1,
"thumbNail": null,
"text": "Que Onda Chicos",
"archivo": null,
"created_at": "2017-07-20 00:00:00",
"updated_at": "2017-07-20 00:00:00",
"user": {
"id": 1,
"name": "Juan Carlos",
"about": "Hola me llamo Juan Carlos",
"handler": "Juantvz50",
"pp": null,
"verify": 1,
"email": "[email protected]",
"deleted_at": null,
"LoginId": null,
"created_at": "2017-07-20 23:52:28",
"updated_at": "2017-07-20 23:52:28"
}
}
]
}
即使我的数据库具有各自不同的ID:
它看起来像什么是错在一些部分我代码,我不知道在哪个部分如果你想看更多的代码只是在评论中提问。
UPDATE
它给我的ID,其实是表clase_user这是我使用它来加入许多透视表,很多与用户的类(当你跟随别人喜欢的ID在YouTube上),我想是因为我在说文章::加入(“clase_user”,任何想法,也包括后期的标识?
答
类似到这一个:Join with where query in Laravel returns wrong timestamps
由于你的JOIN,属性被覆盖(不仅是id,还有created_at/updated_at时间戳)。因此你应该为你的特定属性定义一个select语句。
在这个部分,我只写 - > dd($ user-> id)?为什么,我想返回帖子ID不是用户ID,我已经拥有它的用户ID(顺便说一句,我更新了帖子),感谢您的帮助思想;) –