Как исключить элемент при использовании @foreach в Laravel?

Как исключить элемент при использовании @foreach (blade) в Laravel?

пример:
У пользователя есть несколько статей на странице подробностей статьи:

<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Как исключить статью, которая была показана выше?

1

Решение

Есть несколько способов сделать это.
Один вариант будет простой, если проверить в шаблоне:

<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);
}
4

Другие решения

Если вы не хотите показывать 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 является variable вы отправляете из controller

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
0
По вопросам рекламы [email protected]