mysql连接三个表,同一个表两次

时间:2016-09-02 10:30:30

标签: mysql laravel

我有三张桌子

1)用户 - 有1个外键,state_id引用状态的id 2)user_details - 有2个外键 - 引用用户id的user_id -property_state_id引用状态

上的id

3)陈述

如何连接这3个表,以便我拥有用户信息,用户详细信息以及state_id和property_state_id状态的信息?

我在laravel

中写过这种方式
User::where('users.id', $id)
            ->leftJoin('states', 'users.state_id', '=', 'states.id')
            ->leftJoin('user_details', 'user_details.user_id', '=', 'users.id')
            ->first();

好像我不能两次加入州表。这可能有什么解决方案?

1 个答案:

答案 0 :(得分:2)

您可以在连接中多次连接同一个表,但是您需要提供一个表别名(下面的示例代码中的s1和s2):

User::where('users.id', $id)
        ->leftJoin('states as s1', 'users.state_id', '=', 's1.id')
        ->leftJoin('user_details', 'user_details.user_id', '=', 'users.id')
        ->leftJoin('states as s2', 'user_details.property_state_id', '=', 's2.id')
        ->first();