内部联接查询返回错误的ID

时间:2017-08-25 03:53:38

标签: mysql laravel

最后更新

我在Laravel中构建的iOS中的社交媒体应用程序有这个API,而且我一直遇到了feed部分的问题,feed的Eloquent代码给了我每个帖子的错误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": "jc_estevezr@hotmail.com",
                "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": "jc_estevezr@hotmail.com",
                "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": "jc_estevezr@hotmail.com",
                "deleted_at": null,
                "LoginId": null,
                "created_at": "2017-07-20 23:52:28",
                "updated_at": "2017-07-20 23:52:28"
            }
        }
    ]
}

即使我的数据库每个数据库都有不同的ID:

Database

在我的代码的某些部分看起来有些问题,我不知道在哪个部分,如果你想在评论中看到更多的代码。

更新

它给我的id实际上是表 clase_user 的id,它是我用来与用户一起加入多个类的数据透视表(比如当你在youtube上关注某人时) ,我想是因为我说帖子::加入('clase_user',任何想法也包括帖子的ID?

clase_user

1 个答案:

答案 0 :(得分:1)

与此相似:Join with where query in Laravel returns wrong timestamps

由于您的JOIN,属性被覆盖(不仅是id,还有created_at / updated_at时间戳)。因此,您应该为特定属性定义一个select语句。