0

我有 4 张桌子。锦标赛、用户、角色和 users_roles。

一名用户作为裁判属于冠军。但我必须只选择具有“法官”角色的用户。

为此,我在冠军表中创建了名为“main_judge”的新列并创建了新关系

class Championship extends Model
{
    ...
    public function mainJudge()
    {
        return $this->hasOne('App\User', 'id', 'main_judge');
    }
    ...
}

然后我添加查询一些代码

$query->join('users_roles', 'users.id',  '=', 'users_roles.user_id')
            ->join('roles', 'users_roles.role_id', '=', 'roles.id')
            ->where('roles.alias', '=', 'judge');

当我以 sql 形式打印查询时(见屏幕)

http://joxi.ru/a2X45M1Sw0RpE2

在 $query->get() 而不是用户 ID 之后,我得到了一个角色 ID(见屏幕)

http://joxi.ru/bmoxMaDs3NVoE2

4

1 回答 1

0

我建议使用 eloquent 而不是查询构建器,因为它将消除手动定义任何连接的需要。

你应该能够做到这一点:

$championship = Championship::find($id);

$judge = $championship->mainJudge;

如果你那么dd($judge)你应该最终得到适当的User对象。

于 2018-11-14T16:40:06.657 回答