Php Laravel获取我的好友列表查询
我正在使用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')
`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();