Как я могу заказать две таблицы? - PullRequest
2 голосов
/ 02 октября 2019

У меня есть две таблицы : users ('ID' 'username' '...') и connectivities('ID' 'following_ID' '...')

Каждый раз, когда один пользователь следует за другим, в connectivities создается запись. Подписчики сортируются в порядке убывания после запроса по идентификатору пользователя. Теперь я не хочу сортировать подписчиков по идентификатору, а по записям в connectivities. Таким образом, всегда всегда отображается последний новый подписчик.

    public function getFollowers($offset = false,$limit = null){
    if (empty($this->user_id) || !is_numeric($this->user_id)) {
        return false;
    }

    else if (!empty($limit) && !is_numeric($limit)) {
        return false;
    }

    $user_id = $this->user_id;
    $t_users = T_USERS;
    $t_conn  = T_CONNECTIV;

    self::$db->join("{$t_conn} c","c.follower_id = u.user_id AND c.type = 1","INNER");
    self::$db->where("c.following_id",$user_id);
    self::$db->orderBy("u.user_id","DESC");

    if (!empty($offset) && is_numeric($offset)) {
        self::$db->where("u.user_id",$offset,'<');
    }

    $users = self::$db->get("{$t_users} u",$limit);
    $data  = array();

    foreach ($users as $key => $user_data) {
        $user_data = $this->userData($user_data);
        $user_data->is_following = false;

        if (IS_LOGGED) {
            $this->user_id = self::$me->user_id;
            $user_data->is_following = $this->isFollowing($user_data->user_id);
        }

        $data[]    = $user_data;
    }

    return $data;
}

Если я изменил self :: $ db-> orderBy ("u.user_id", "DESC"); на self :: $ db-> orderBy ("c.id", "DESC");, это также работает, но всегда отображаются те же самые из 20 записей. Затем они всегда повторяются. Я думаю, что проблема заключается в смещении.

У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 02 октября 2019

дважды вызвать $db->orderBy, чтобы отсортировать строки по u.userid desc, c.id desc

self::$db->join("{$t_conn} c","c.follower_id = u.user_id AND c.type = 1","INNER");
self::$db->where("c.following_id",$user_id);
self::$db->orderBy("u.user_id desc","c.id desc");
...