Php Laravel雄辩:如何选择好友用户模型?

Php Laravel雄辩:如何选择好友用户模型?,php,mysql,database,laravel,eloquent,Php,Mysql,Database,Laravel,Eloquent,我正在尝试选择朋友的所有用户对象。朋友可以是已保存友谊的第一个用户或第二个用户。我如何使用雄辩的语言来实现这一点 以下是我尝试过的: $friends = Friend::select(array('users.id', 'users.name')) ->leftJoin('users', function($join) { $join->on('user_id_1', '=', 'users.id'); // $join->on('us

我正在尝试选择朋友的所有用户对象。朋友可以是已保存友谊的第一个用户或第二个用户。我如何使用雄辩的语言来实现这一点

以下是我尝试过的:

$friends = Friend::select(array('users.id', 'users.name'))
->leftJoin('users', function($join)
    {
        $join->on('user_id_1', '=', 'users.id');
        // $join->on('user_id_2', '=', 'users.id');
    })
->where( ['user_id_1' => $myID, 'accepted' => '1'] )
->orWhere( ['user_id_2' => $myID, 'accepted' => '1'] )->get();"
有什么想法吗

编辑

我找到了使用
orOn
的选项。但是,我仍然需要确保所选用户不是您

数据库结构

users
-----
id (int)
name (varchar)

friends
-----
id (int)
user_1 (int)
user_2 (int)
accepted (int)

您应该查询您的
用户
,而不是您的
朋友
模型,因为您希望接收
用户
对象的列表。接下来,您可以添加另一个where子句,以不获取用户id与变量匹配的行

结果是这样的:

User::leftJoin('friends', function ($join) {
    $join->on('friends.user_id_1', '=', 'users.id')
        ->orOn('friends.user_id_2', '=', 'users.id');
})
->where(function ($query) use ($myID) {
    // Group orwhere functions so the query builder knows these belong together
    $query->where([
        'friends.user_id_1' => $myID,
        'friends.accepted' => true
    ])
    ->orWhere([
        'friends.user_id_2' => $myID,
        'friends.accepted' => true
    ]);
})
->where('users.id', '!=', $myID) // Exclude the user with id $myID
->get();

请发布数据库结构,以便我们知道这里发生了什么。我更新了我的问题。因此,您想要的是获取与id为
$myID
的用户为好友的所有用户对象?您是否在
用户
模型中定义了任何关系?Laravel可以精确地处理大多数查询,但不能处理您自己的用户对象。