尝试从数组打印时,Laravel返回未定义的偏移量0

时间:2015-11-16 19:32:23

标签: laravel

控制器

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.20"
        android:gravity="left">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="<<" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="0.60"
        android:gravity="center">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="data"
            android:textSize="18sp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.20"
        android:gravity="right">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="<<" />
    </LinearLayout>
</LinearLayout>

查看

$new_products = Product::with('images')->orderBy('created_at', 'desc')->take(10)->get();
return view('site/home', compact('new_products'));

这给我错误未定义的偏移量0.我如何打印图像的值?

{{ $new_product->images[0]->image_name }} 上返回的值 enter image description here

3 个答案:

答案 0 :(得分:1)

如果您想获得第一项,可以使用Pupils方法。

first

您还可以使用{{ $new_product->images->first()->image_name }} 方法获取给定偏移量的项目。

offsetGet

您也可以遍历该集合并执行此操作:

{{ $new_product->images->offsetGet(0)->image_name }}

注意:前两种方法仅在您的产品有图像时才有效。如果他们不这样做,那么Laravel将返回一个空集合。循环遍历集合的第三种方法适用于所有情况。

如果您想确保产品包含图片,可以使用@foreach ($new_product->images as $image) {{ $image->image_name }} @endforeach 方法。

has

这只会返回至少包含一张图片的产品。

关于收集方法的文档:http://laravel.com/docs/master/collections#method-first

人际关系文件:http://laravel.com/docs/5.1/eloquent-relationships

答案 1 :(得分:0)

从外观看来,$ new_product也是两个项目的数组,

{{$ new_product [0] - &gt; images [0] - &gt; image_name}}

编辑:Thomas Kim有更好的答案

答案 2 :(得分:0)

您的关系(images)是一个集合对象,如果您使用all()方法,那么您将获得底层数组,然后您可以使用{{1}访问数组中的任何项目}:

index

同样{{ $new_product->images->all()[0]->image_name }} 方法也可以:

toArray()

因此,要么将数组传递给{{ $new_product->images->toArray()[0]['image_name'] }} 之类的视图,要么将其循环。您可以查看documentation here以获取$new_product->all()中有关Collection对象的更多信息。