控制器
<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.我如何打印图像的值?
答案 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
答案 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
对象的更多信息。