Вы не закрываете свой @foreach, вы использовали второй. Но, пожалуйста, примите во внимание информацию ниже!
@if(!empty($page->tags))
@foreach($page->tags as $tag)
@if($loop->last)
{{$tag->name}}
@else
{{$tag->name}},
@endif
@endforeach
@endif
*** Связанные и, возможно, полезные для подобных ошибок **
Ваша проблема заключается в том, что вы получаете коллекцию с помощью $ page-> теги, и он не взаимодействует с empty () так, как вы думаете.
In php:
$obj = (object) [];
empty($obj);
// returns false
И laravel Collection является объектом, поэтому даже если теги $ page-> не содержат элементов, вы, по сути, делаете:
empty(collect())
// returns false
Если вы можете гарантировать, что теги $ page-> всегда установлены, вы можете использовать метод сбора:
@if($page->tags->isNotEmpty())
@endif
Однако, если иногда теги $ page-> имеют значение null (ie теги не загружаются на страницу), вы можете использовать:
@if(isset($page->tags))
@endif
Все это сказано, ЕСЛИ Теги $ page-> всегда присутствуют (загружаются), тогда синтаксис @foreach не должен ошибаться, поскольку Collection является итеративным и будет эквивалентно выполнению foreach ([] as $item) {}
.