如何从Laravel中的用户ID获取用户名?

时间:2017-12-03 06:30:11

标签: php mysql laravel

hellow我想显示10个人在过去24小时内存入和取出金额。我能够在那里显示user_id和amount但我想要用户名而不是user_id。

正在为不退出的基金工作

我在$ funds中没有名字colum而$ withdrae在用户中我有这个代码:

<div class="col-md-6">
<div class="text-center"><h4 class="text-success">Last 10 Investors</h4></div>
<table class="table text-white" >
    <tbody>
        @foreach( \App\Fund::where('created_at', '>', \Carbon\Carbon::now()->subHours(24))->orderBy('id', 'DESC')->take(10)->get() as $fund)
        <tr>
            <th scope="row"></th>
            <td>{{ $fund->user_id }}</td>
            <td class="text-center text-warning">{{ $fund->total }}</td>
            <td class="text-right"><img src="https://adsok.com/img/btc.png" alt="Bitcoin"> <i><b>bitcoin</b></i><br></td><br>
        </tr>@endforeach

    </tbody>
</table> 

撤回

<div class="col-md-6">
<div class="text-center"><h4 class="text-success">Last 10 Investors</h4></div>
<table class="table text-white" >
    <tbody>
        @foreach( \App\Withdraw::where('created_at', '>', \Carbon\Carbon::now()->subHours(24))->orderBy('id', 'DESC')->take(10)->get() as $withdraw)
        <tr>
            <th scope="row"></th>
            <td>{{ $withdraw->user_id }}</td>
            <td class="text-center text-warning">{{ $withdraw->total }}</td>
            <td class="text-right"><img src="https://adsok.com/img/btc.png" alt="Bitcoin"> <i><b>bitcoin</b></i><br></td><br>
        </tr>@endforeach

    </tbody>
</table> 

我在基金和撤回模式中都粘贴了相同的关系

 public function user()
{
return $this->belongsTo('App\User', 'user_id');}    

2 个答案:

答案 0 :(得分:0)

with('user')添加到查询中:

Fund::with('user')->where('created_at', '>', Carbon::now()->subHours(24))->orderBy('id', 'desc')->take(10)->get()

然后您就可以显示用户名:

{{ $fund->user->name }}

另外,do not run any queries in Blade templates,这是一种不好的做法。

答案 1 :(得分:0)

您的WithdrawFund模型应与belongsTo模型建立User关系。

public function user() {
    return $this->belongsTo("App\Models\User", "user_id", "id");
}

然后,当您尝试访问与User相关的Fund时,您只需执行

$fund->user->name

但是Fund可能没有任何相关的User,因此您需要在访问其属性之前检查它是否存在。

$fund->user ? $fund->user->name : "na"

但是,当您访问模型集合中的关系时,必须要小心,因为每次您执行另一个查询时。为了防止这种情况,您可以使用with方法急切加载关系。

$funds = Fund::with('user')->get();
foreach($funds as $fund) {
     echo $fund->user ? $fund->user->name : "na";
}