我有三张桌子
1)用户 - 有1个外键,state_id引用状态的id 2)user_details - 有2个外键 - 引用用户id的user_id -property_state_id引用状态
上的id3)陈述
如何连接这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();
好像我不能两次加入州表。这可能有什么解决方案?
答案 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();