Laravel获取我的朋友列表查询

时间:2013-12-27 14:09:16

标签: php mysql laravel relational-database

我正在使用laravel来创建朋友列表。现在我想让所有朋友都使用USER表中的名字和头像以及其他东西。

我的架构:

`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_by是我的user_id,那么检查uid_to else,如果uid_by不是我的user_id,那么检查uid_by然后使用它们从users表的uid列获取数据。

所以我的uid可以在uid_by和我的朋友在uid_to上,反之亦然。

但我无法正确查询。

1 个答案:

答案 0 :(得分:0)

请参阅Advanced wheres

$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();