Php Laravel获取我的好友列表查询

Php Laravel获取我的好友列表查询,php,mysql,laravel,relational-database,Php,Mysql,Laravel,Relational Database,我正在使用laravel创建一个朋友列表。现在我想从用户表中获取所有朋友的姓名、头像等信息 我的模式: `cid`, `uid_by`, `uid_to`, `status` uid_by (the inviting user) uid_to (to be friend user) status (accepted or ignored) 我每段友谊只有一排。这意味着它是双向的友谊 我试图提出一个问题: $contacts = DB::table('contacts')

我正在使用laravel创建一个朋友列表。现在我想从用户表中获取所有朋友的姓名、头像等信息

我的模式:

`cid`, `uid_by`, `uid_to`, `status`

uid_by (the inviting user)
uid_to (to be friend user)
status (accepted or ignored)
我每段友谊只有一排。这意味着它是双向的友谊

我试图提出一个问题:

    $contacts = DB::table('contacts')
                        ->leftJoin('users', 'contacts.uid_by', '=', 'users.uid')
                        ->where('uid_by', $me)
                        ->orWhere('uid_to', $me)
                        ->where('contacts.status', 'accepted')
                        ->get();
但它给了我一些错误的信息。比如不给我朋友的用户信息。它给了我自己的信息。我只想得到朋友的信息

我应该重新设计数据库吗?还是我遗漏了什么


更新

从技术上讲,问题是如果uid\u by是我的用户id,则检查uid\u to,否则如果uid\u by不是我的用户id,则检查uid\u by,然后使用这些从用户表uid列获取数据

所以我的uid可以在uid\u by上,我的朋友可以在uid\u to上,反之亦然

但是我无法正确地查询。

请参阅:

$contacts=DB::table('contacts'))
->join('users','contacts.uid_by','=','users.uid')
->其中('users.uid',''$me)
->其中('contacts.status','accepted')
->其中(函数($query)
{
$query-->其中('uid\u by',$me)
->或where('uid_to',$me)
})
->get();

尝试了这一点,但它仍然提供了我自己关于某些结果的数据。我的朋友id可以是uid\u by或uid\u to。因此,如果我的id在uid\u中,那么我的朋友id在uid\u中。或者如果我的id在uid\u to中,那么我的朋友uid在uid\u by中。所以我需要知道如何质疑这一点。谢谢。等等,你为什么要做leftJoin?对不起,我是新手。想详细说明一下吗?如果你把自己排除在外呢?更新了,但是怎么更新呢?我想问的问题是,我所有的朋友。然后将它加入到用户中,这样我就可以获得我朋友的用户数据。就像我说的,朋友的用户id可以是uid\u by或uid\u to。所以我必须知道第一个w/c是我的,这样我才能定义另一个是我朋友的id。
$contacts = DB::table('contacts')
 ->join('users', 'contacts.uid_by', '=', 'users.uid')
 ->where('users.uid','<>',$me)          
 ->where('contacts.status', 'accepted')                       
 ->where(function($query)
            {
                $query-->where('uid_by', $me)
                      ->orWhere('uid_to', $me)
            })

  ->get();