访问冲突使用Laravel将表连接到另一个表两次

时间:2014-03-17 22:21:28

标签: php mysql laravel

所以我得到了一个名为匹配的表,其中包含2个团队ID,这些团队在同一个名为clans的表中

  

匹配

     

team1_id | team2_id

 2     |    4

 1     |    2

 4     |    1

  

部族

ID | Name 

 2 | abc 

 1 | cde

 4 | efg

我的目标是,当我在网页上打印出来时,会显示团队名称而不是他们的ID。现在解释一下,我正在使用laravel,使用以下代码:

    $unfinished = DB::table('matches')->where('team1_score', NULL)
        ->join('matches', 'matches.team1_id', '=', 'clans.id')
        ->join('matches', 'matches.team2_id', '=', 'clans.id')
        ->select('clans.clan_name as team1_name', 'clan_name as team2_name', 'matches.id'
        )->get();

我需要将它们全部存储在$ unfinished中。当然,这段代码不起作用,我想我理解为什么。然而,我无法弄清楚的是如何解决这个问题,以便它能够发挥作用。它吐出以下exakt错误:

SQLSTATE [42000]:语法错误或访问冲突:1066不唯一的表/别名:'matches'(SQL:选择clansclan_nameteam1_name,{{1} } clan_nameteam2_namematchesidtournaments来自name内部加入matches tournamentstournaments = idmatches内部加入tournaments_id位于matchesmatches = team1_idclans内心在id上加入matchesmatches = team2_idclans其中id为空)

1 个答案:

答案 0 :(得分:4)

使用别名:

$unfinished = DB::table('matches')->where('team1_score', NULL)
    ->join('clans AS clans1', 'matches.team1_id', '=', 'clans1.id')
    ->join('clans AS clans2', 'matches.team2_id', '=', 'clans2.id')
    ->select('clans1.clan_name as team1_name', 'clans2.clan_name as team2_name', 'matches.id'
)->get();