я бы вставил класс «непрозрачность» только в первую «карусельную ячейку».
Для остальных в петле их быть не должно.
<div class = "main-carousel">
@foreach($projects as $p)
@if ($p->getMedia('teaser')->first() ?? "")
<div class = "carousel-cell">
<div class = "row">
<div id = "project-info" class = "col-lg-3 text-md-right pr-md-5 project-info">
<div class = "project opacity">
<h2 class = "project-title mb-0">{{$p->name}}</h2>
<h3 class = "project-category"><a href = "#">Foto</a> / <a href = "#">Video Produktion</a></h3>
</div>
</div>
<div class = "col-lg-9 project-img opacity">
<a href = "{{url('projects')}}/{{$p->slug}}">
<div class = "start-teaser">
<img src = "{{asset('storage')}}/{{$p->getMedia('teaser')->first()->id}}/{{$p->getMedia('teaser')->first()->file_name}}" alt = "Land Rover">
</div>
</a>
</div>
</div>
</div>
@endif
@endforeach
</div>
Вы можете использовать переменную $loop->first
для добавления класса только на первой итерации цикла.
Вот так: <div class = "carousel-cell {{ $loop->first ? 'opacity' : '' }}">
Подробнее здесь: https://laravel.com/docs/9.x/blade#the-loop-переменная