Laravel:如何在循环中显示其他表的值?

时间:2017-12-26 06:42:04

标签: php laravel laravel-5

所以,我有这个代码打印用户启动的各种主题/线程。

它循环显示包含与帖子相关的数据的帖子表。

用户列中,它会显示user_id。但我想访问用户表并显示与user_name匹配的user_id列。怎么做?

<table border="2">
    <tr>
        <th>Topic</th>
        <th>User</th>
        <th>Replies</th>
        <th>Views</th>
        <th>Last Update</th>
    </tr>
    @foreach($topics as $topic)
        <tr>
            <td><a href="topics/{{$topic->id}}">{{$topic->topic_title}}</a></td>
            <td>{{$topic->id}}</td>
            <td>0</td>
            <td>0</td>
            <td>{{$topic->updated_at}}</td>
        </tr>
    @endforeach
</table>

控制器代码:

public function show($id)
    {
        $topics = Topic::where('board_id', $id)->get();
        return view('boards.show')->with('topics', $topics);
    }

4 个答案:

答案 0 :(得分:2)

在控制器eager load用户模型中:

String title = "market";
    for(int i = 0 ; i < 8 ; i++ ) {
      double offset = i / 08d;

      setupDestationLocation(longlat+offset,latitue,title+i);
    }

在视图中:

$topics = Topic::where('board_id', $id)->with('user')->get();

我假设您已经在<td>{{ $topic->user->user_name }}</td> 模型中定义了user关系:

Topic

答案 1 :(得分:0)

你可以尝试这样的事情:

@foreach($topics as $topic)
    @php $user = DB::table('User')->where('id', $topic->id)->first(); @endphp;
    <tr>
        <td><a href="topics/{{$topic->id}}">{{$topic->topic_title}}</a></td>          
        <td>{{ $user }}</td>
        <td>0</td>
        <td>0</td>
        <td>{{$topic->updated_at}}</td>
    </tr>
@endforeach

答案 2 :(得分:0)

帖子模型中

public function user(){
     $this->belongsTo(User::class);
}

在您的刀片 {{$ topic-&gt; user-&gt; name}}

<table border="2">
<tr>
    <th>Topic</th>
    <th>User</th>
    <th>Replies</th>
    <th>Views</th>
    <th>Last Update</th>
</tr>
@foreach($topics as $topic)
    <tr>
        <td><a href="topics/{{$topic->id}}">{{$topic->topic_title}}</a></td>
        <td>{{$topic->user->name}}</td>
        <td>0</td>
        <td>0</td>
        <td>{{$topic->updated_at}}</td>
    </tr>
@endforeach

答案 3 :(得分:0)

您需要首先在模型中定义关系:

class User extends Model
{
    public function post()
    {
        return $this->hasMany("App\Post");
    }
}

class Post extends Model
{
    public function user()
    {
        return $this->belongsTo("App\User");
    }
}

然后在视图侧的循环中,您可以访问用户的数据,如下所示:

@foreach($topics as $topic)
    <tr>
        <td>{{$topic->user->name}}</td>

    </tr>
@endforeach

在这种情况下,您不需要使用“with”功能。你只需要获取主题,传递它们进行查看,迭代并获得用户的数据