Если вы хотите, чтобы получить первый элемент, вы можете использовать метод first
.
{{ $new_product->images->first()->image_name }}
У вас также есть метод offsetGet
получить элемент по заданному смещению.
{{ $new_product->images->offsetGet(0)->image_name }}
Вы можете также цикл по коллекции, хотя и делают это:
@foreach ($new_product->images as $image)
{{ $image->image_name }}
@endforeach
Примечание: первые два метода будет работать, только если продукты имеют изображения. Если они этого не сделают, то Laravel вернет пустую коллекцию. Третий метод циклизации в коллекции будет работать во всех случаях.
Если вы хотите, чтобы у продуктов были изображения, вы можете использовать метод has
.
$new_products = Product::with('images')->has('images')->orderBy('created_at', 'desc')->take(10)->get();
Это приведет только к возврату продуктов, имеющих хотя бы одно изображение.
Документы по методам сбора: http://laravel.com/docs/master/collections#method-first
Docs на отношениях: http://laravel.com/docs/5.1/eloquent-relationships
только третье решение работает. Первое решение дает «Попытка получить свойство не-объекта», а вторая дает «неопределенное смещение 0» –
@AbelD Возможно ли, что некоторые из ваших продуктов не имеют изображений? В этом случае первые два решения не будут работать. Третий будет работать во всех случаях.Метод 'with' не гарантирует, что у продуктов есть изображения. Он может возвращать пустую коллекцию. –
Правильно, вторая доза продукта не имеет изображений. Дай мне проверить. –