所以我得到了一个名为 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:选择 clans
。clan_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/