Вывести совпадения Laravel + MySql

89
27 февраля 2022, 13:00

Как вывести совпадения для пользователя -user_i = 1. Нужно вывести пользователей, которых лайкнул пользователь 1 и те пользователя, которые лайкнули этого пользователя

Например пользователь 12 подходит под условие, но не знаю как это вывести

$users = DB::table('likes')
            ->leftJoin('users','users.id','=','likes.like_user')
            ->leftJoin('user_attributes','user_attributes.user_id','=','likes.like_user')
            ->select('user_attributes.fullname','user_attributes.avatar','user_attributes.country','user_attributes.city','user_attributes.age',
                'users.name','users.id','likes.created_at')
            ->where('likes.like_user','=', 'likes.user_id')
            ->where('likes.user_id','=', Auth::user()->id)
            ->paginate(15);
Answer 1
SELECT t1.user_id 
FROM likes t1
JOIN likes t2 ON t1.user_id = t2.like_user 
             AND t2.user_id = 1
             AND t1.like_user = 1

и, если я верно понимаю синтаксис, то

$users = DB::table(DB:raw('likes t1'))
       ->join(DB:raw('likes t2'), 't1.user_id', '=', 't2.like_user ')
       ->where('t2.user_id', '=', '1')
       ->where(' t1.like_user', '=', '1')
Answer 2
SELECT
  l1.*
FROM
  likes l1
  JOIN likes l2 ON (l1.like_user = l2.user_id)
WHERE
  l1.user_id = 1 OR
  l1.like_user = 1
Answer 3

рабочий код

$users = DB::table('likes AS t1')
            ->join('likes AS t2', 't1.user_id', '=', 't2.like_user')
            ->leftJoin('users','users.id','=','t1.user_id')
            ->leftJoin('user_attributes','user_attributes.user_id','=','t1.user_id')
            ->select('user_attributes.fullname','user_attributes.avatar','user_attributes.country','user_attributes.city','user_attributes.age',
                'users.name','users.id','t1.created_at')
            ->where('t2.user_id', '=', Auth::user()->id)
            ->where('t1.like_user', '=', Auth::user()->id)->distinct('t1.user_id')->get();
READ ALSO
Как сделать автоматический рестарт mariadb-10.3 в контейнере Docker при падении?

Как сделать автоматический рестарт mariadb-10.3 в контейнере Docker при падении?

Есть БД установленная в контейнере докер, бывает она падает, как можно отслеживать это дело и рестартить ее автоматически? Система Centos панель...

131
Скрыть токен telegram-бота в открытом коде

Скрыть токен telegram-бота в открытом коде

Необходимо выложить код telegram-бота на GitHubКаким образом можно скрыть его токен?

134
Оптимизация кода (ternary + for)

Оптимизация кода (ternary + for)

Решил задачку, но код все же надо оптимизироватьНе могу понять, как можно избавиться от тернарного в return, добавив его в цикл for(точнее во второе...

83