如何在Laravel中使用@foreach(刀片)时排除项目?
例如:
用户在文章详细信息页面中有一些文章:
<p>Article detail:</p>
<h2>{{$article->title}}</h2>
<p>{{$article->content}}</p>
<h4>The other articles of this user:</h4>
@foreach ($articles as $article)
<p>{{$article->title}}</p>
@endforeach
问题:
在@foreach
中,如何排除上面显示的文章?
答案 0 :(得分:4)
有几种方法可以做到这一点。 如果在模板中检查,一个选项就是简单:
<p>Article detail:</p>
<h2>{{$article->title}}</h2>
<p>{{$article->content}}</p>
<h4>The other articles of this user:</h4>
@foreach ($articles as $otherArticle)
@if($article->id !== $otherArticle->id)
<p>{{$article->title}}</p>
@endif
@endforeach
另一个可能更好的选择是从控制器中的数据中排除主要文章:
function showArticle(Article $article)
{
$otherArticles = $article->user->articles->filter(
function($otherArticle) use($article) {
return $otherArticle->id !== $article->id;
});
return view('someview')
->with('article', $article)
->with('otherArticles', $otherArticles);
}
答案 1 :(得分:0)
如果您不想在article
The other articles of this user:
在控制器上,您应该在此详细信息页面上发送id of article
以查看
在视野
<p>Article detail:</p>
<h2>{{$article->title}}</h2>
<p>{{$article->content}}</p>
<h4>The other articles of this user:</h4>
@foreach ($articles as $article)
@if($article->id !== $article_id)
<p>{{$article->title}}</p>
@endif
@endforeach
article_id
的{{1}}是variable
controller
答案 2 :(得分:0)
从第二个元素开始使用for循环。
<p>Article detail:</p>
<h2>{{$article->title}}</h2>
<p>{{$article->content}}</p>
@if (count($articles) > 1)
<h4>The other articles of this user:</h4>
@for ($i = 1; $i < count($articles); $i++)
<p>{{$articles[$i]->title}}</p>
@endfor
@endif