首页 > 解决方案 > Laravel 多个连接?

问题描述

我正在尝试通过 leftJoin 取出管理员用户名。我有一个名为server_bans_historyusers的表。

server_bans_history 表有一个名为steamidadmin_steamid的唯一行

通过以下方式获取所有数据:

@foreach ($user->BanHistory as $BanHistory)

这段代码工作正常,但我不知道热门的 admin_steamid 行,我需要将该 steamid 转换为用户表中的用户名。

因为现在如果我使用{{ $BanHistory->username }}我会得到 BANNED 用户 USERNAME 而不是 ADMIN 用户名。

示例现在我正在使用代码:

$user->BanHistory = DB::table('server_bans_history AS sh')
->leftJoin('users AS us', 'us.steam_id', '=', 'sh.steamid')
->where('sh.steamid', '=', $user->steam_id)
->select("sh.*", "us.*")
->orderBy('sh.date', 'desc')
->get('');

我需要转换 admin_steamid -> user.username

我可以使用多个 leftJoin 或类似的东西吗?

感谢您帮助我理解 leftJoin!

标签: phpmysqllaravel

解决方案


我认为应该是这样的:

$user->BanHistory = DB::table('server_bans_history AS sh')
->leftJoin('users AS us', 'us.steam_id', '=', 'sh.steamid')
->leftJoin('users AS us2', 'us.steam_id', '=', 'sh.admin_steamid')
->where('sh.steamid', '=', $user->steam_id)
->select("sh.*", "us.*", "us2.username as admin_name")
->orderBy('sh.date', 'desc')
->get('');

推荐阅读