php - 访问冲突使用 Laravel 两次连接另一个表上的表

标签 php mysql laravel

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

matches

team1_id | team2_id

 2     |    4

 1     |    2

 4     |    1

Clans

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 不是唯一的表/别名:“匹配”(SQL:选择 clansclan_name as team1_name clan_name 作为team2_name比赛id锦标赛name from matches inner join tournaments on tournaments.id = 匹配.tournaments_id inner join matches on matches.team1_id = clans .id inner join matches on matches.team2_id = clans. id 其中 team1_score 为空)

最佳答案

使用别名:

$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();

关于php - 访问冲突使用 Laravel 两次连接另一个表上的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22466672/

相关文章:

php - 去 PHP parse_url() 不去的地方 - 仅解析域名

php - 更改 auth_redirect() 页面

mysql - 从两个 SQL 字段中选择问题

php - 保存到关系表 Laravel 4

php - 在坏服务器上插入多个表失败

PhpWord 不会替换文本

mysql - 通过查找最大值来填充列

mysql - SQL 查询速度当表具有类型为 "Text"的列时

mysql - 具有一对一关系的 Laravel 批量插入

php - Laravel:如何在 Form POST 中使用参数以在 Route::post 中使用?