Как получить информацию о пользователях, которая понравилась друг другу, используя конструктор запросов Laravel - PullRequest
0 голосов
/ 07 июня 2019

У меня есть запрос ниже, который проверяет, нравятся ли друг другу пользователи:

SELECT a.user_id, a.target_id 
FROM user_nices a
INNER JOIN user_nices b
ON a.user_id = b.target_id AND b.user_id = a.target_id

И у меня также есть таблица users, в которой хранится информация о пользователях. И я хотел бы также получить их информацию. Я создал функцию в модальном, в которой id обозначает текущий идентификатор пользователя.

public function getMatches($id){
    return \DB::table('user_nices')
            ->join("user_nices as b", function($q){
                $q->on("user_nices.user_id", "=", "b.target_id");
                $q->on("b.user_id", "=", "user_nices.target_id");
            })
            ->get();
}

Мой код на данный момент получает данные, но без информации о пользователях, а также должен возвращать только совпадающих пользователей. Как я могу достичь этого, используя объединение запросов Laravel?

1 Ответ

0 голосов
/ 07 июня 2019

Спасибо за вклад, я наконец-то сделал это таким образом, но если у вас есть лучшие решения, я все еще открыт для этого.

public function getMatchPeople($uid)
{

    return \DB::table('user_nices')
            ->join("user_nices as b", function($q){
                $q->on("user_nices.user_id", "=", "b.target_id");
                $q->on("b.user_id", "=", "user_nices.target_id");
            })
            ->join('users', function($q){
                $q->on('users.id',"=", "user_nices.target_id");
            })
            //to only get users details who likes current user
            ->where("user_nices.user_id", '=', $uid)
            ->where("user_nices.target_id", '!=', $uid)
            ->selectRaw("user_nices.user_id as user_id, users.name as name,
                        user_nices.id as id, users.email as email, users.nickname as nickname ,user_nices.created_at as create_at")
            ->get();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...