下面的第一个@foreach带来了创建帖子的用户。我需要输出为共享帖子的用户,该帖子由下面的第二个@foreach返回。
First Foreach:
@foreach ($friendShares as $friendShare)
<p> {{$friendShare->body}} by {{$friendShare->user->getname()}}</p>
@endforeach
Second Foreach:
@foreach ($shares as $shares)
<p> {{$shares->user->getname()}}</p>
@endforeach
我的问题是,将{{$ shares-&gt; user-&gt; getname()}}集成到@foreach($ friendShares as $ friendShare)中的正确语法是什么,可能是这样的:
@foreach ($friendShares as $friendShare , $shares as $shares )
<p> {{$friendShare->body}} by {{$shares->user->getname()}}}}</p>
答案 0 :(得分:0)
我认为不可能在一个foreach中检查两个数组,但是你可以执行以下操作:
@for ($i = 0;$i < min([count($friendShares),count($shares)]);$i++)
<p> {{array_values($friendShares)[$i]->body}} by {{array_values($shares)[$i]->user->getname()}}}}</p>
这应该可以达到你想要的效果。
答案 1 :(得分:0)
你总是可以使用两个嵌套的foreach ....来存储某些变量中的所有值
@foreach ($shares as $shares)
<p> <?php $shares_get_name = $shares->user->getname() ?></p>
@foreach($friendShares as $friendShare)
<p> {{$friendShare->body}} by {{$shares_get_name}}</p>
@endforeach
我希望这就是你想要的......如果没有,请你详细说明你需要的整合
答案 2 :(得分:0)
我将控制器中的关系更改为查询,这对我来说更简单明了(但仍使用关系来获取$ myFriends列表):
控制器代码
5 five
4 four
3 three
2 two
1 one
查看代码:
$myFriends = Auth::user()->friends()->lists('id');
$sharedPosts = DB::table('shares')
->join('users', 'users.id', '=', 'shares.user_id')
->join('posts', function($join){
$join->on('posts.id', '=', 'shares.post_id');
})
->where('shares.user_id', '=', $myFriends)
->get();
return view('profile.index')
->with('friendShares', $sharedPosts);