如何从数据库中获取用户名?

0md85ypi  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(351)

我是拉威尔的初学者。我正在按用户取出用户名 steam_id .
我有一张table叫“ users ", " match_players “和” matches ". users 表中有一行名为“ steam_id “和” username ". match_players “表有一行” steam_id “和” match_id ". matches 表中有一行名为“ match_id “也是。
我需要使用 match_id > steam_id > username 例子: users 表格:
用户名:paul | steam|id:0:0:045658 matches 表格:
匹配id:d54gwdg566g match_players 表格:`
蒸汽id:0:0:045658 |匹配id:d54gwdg566g
我试过这样的方法:
控制器:

$match->CTplayers = DB::table('match_players')->where('match_id', '=', $match->match_id)->where('team', '=', 1)->get();
$match->CTplayersSTEAM = DB::table('match_players')->where('match_id', '=', $match->match_id)->first()->steam_id;
$match->CTplayersID = User::where('steam_id', '=', $match->CTplayersSTEAM)->first()->username;

我的观点:

@foreach ($match->Tplayers as $Tplayer)
    <td>{{ $Tplayer->name }} {{ $match->CTplayersID }}</td>
    <td>{{ $Tplayer->kills }}</td>
    <td>{{ $Tplayer->deaths }}</td>
@endforeach

我知道代码不是很好,但我只是在尝试和学习。

编辑

控制器:

$match->CTplayers  = DB::table('match_players AS mp')
        ->leftJoin('users AS u', 'u.steam_id', '=', 'mp.steam_id')
        ->where('mp.match_id', '=', $match->match_id)
        ->where('team', '=', 1)
        ->select("mp.*", "u.username")
        ->get('');

刀片:

@foreach ($match->CTplayers as $CTplayer)
    <tr>
        <td>{{ $CTplayer->name }}</td>
        <td>{{ $CTplayer->kills }}</td>
        <td>{{ $CTplayer->deaths }}</td>
</tr>
@endforeach
lzfw57am

lzfw57am1#

您应该尝试加入:我认为这段代码应该可以工作,但我没有测试:

$match->CTplayers  = DB::table('match_players AS mp')
                             ->leftJoin('users AS u', 'u.steam_id', '=', 'mp.steam_id')
                             ->where('mp.match_id', '=', $match->match_id)
                             ->select("mp.*", "u.username")
                             ->get();

在你看来,你可以得到:

@foreach ($match->Tplayers as $Tplayer)
    <td>{{ $Tplayer->username }} {{ $match->CTplayersID }}</td>
    <td>{{ $Tplayer->kills }}</td>
    <td>{{ $Tplayer->deaths }}</td>
@endforeach

希望这有帮助

fumotvh3

fumotvh32#

在match players表的模型中定义关系。

public function username()
{
    return $this->hasOne('App\Models\User', 'steam_id', 'steam_id');
}

然后在你的控制器里,

$players = DB::table('match_players')->where('match_id', '=', $match->match_id)->where('team', '=', 1)->get();

foreach($players as $value)
{ 
   echo $value->username->username;
}

我会给你用户名。

um6iljoc

um6iljoc3#

你可以试试加入,

$response = DB::table('match_players')
        ->join('users', 'users.steam_id', '=', 'match_players.steam_id')
        ->where('match_players.match_id', '=', $match->match_id)
        ->select('users.username')
        ->get();

相关问题