所以,我有这个代码打印用户启动的各种主题/线程。
它循环显示包含与帖子相关的数据的帖子表。
在用户列中,它会显示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);
}
答案 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”功能。你只需要获取主题,传递它们进行查看,迭代并获得用户的数据