Laravel 5 从 blade 中的 collection 得到 属性
Laravel 5 get property from collection in blade
我需要从 属性 模型中获取所有图像。
但我得到的只是 Collection 和图像,但我不知道如何访问这些图像。
这是一些代码:
属性控制器
public function show($id)
{
$property = Property::findOrFail($id);
$main_image = $property->images()->mainImage()->get();
$images = $property->images()->get();
return view('property.single',compact('property', 'images', 'main_image'));
}
我在属性和图像之间建立关系:
属性 型号:
public function images()
{
return $this->hasMany('App\Image');
}
图片模型:
public function property()
{
return $this->belongsTo('App\Property');
}
public function scopeMainImage($query)
{
$query->where('main_image', '=', 1);
}
我以为 {{ $main_image->file_name }} 就可以了,但是 print_r returns 一些 collection
[...]
[attributes:protected] => Array
(
[id] => 20
[property_id] => 25
[user_id] => 2
[file_name] => main_image.jpg
[file_type] => jpg
[file_url] => img/properties/25/main_image.jpg
[main_image] => 1
[created_at] => 2015-12-02 15:31:03
[updated_at] => 2015-12-02 15:31:03
)
[...]
那么我该怎么做才能更改它以访问此 collection?
谢谢!
当您在 Eloquent 查询生成器上调用 get() 时,您将始终获得一个集合,即使返回了一条记录。改为调用 first(),您将获得集合中的第一个(也是唯一一个 - 在您的情况下)对象:
$main_image = $property->images()->mainImage()->first();
我需要从 属性 模型中获取所有图像。 但我得到的只是 Collection 和图像,但我不知道如何访问这些图像。
这是一些代码:
属性控制器
public function show($id)
{
$property = Property::findOrFail($id);
$main_image = $property->images()->mainImage()->get();
$images = $property->images()->get();
return view('property.single',compact('property', 'images', 'main_image'));
}
我在属性和图像之间建立关系:
属性 型号:
public function images()
{
return $this->hasMany('App\Image');
}
图片模型:
public function property()
{
return $this->belongsTo('App\Property');
}
public function scopeMainImage($query)
{
$query->where('main_image', '=', 1);
}
我以为 {{ $main_image->file_name }} 就可以了,但是 print_r returns 一些 collection
[...]
[attributes:protected] => Array
(
[id] => 20
[property_id] => 25
[user_id] => 2
[file_name] => main_image.jpg
[file_type] => jpg
[file_url] => img/properties/25/main_image.jpg
[main_image] => 1
[created_at] => 2015-12-02 15:31:03
[updated_at] => 2015-12-02 15:31:03
)
[...]
那么我该怎么做才能更改它以访问此 collection?
谢谢!
当您在 Eloquent 查询生成器上调用 get() 时,您将始终获得一个集合,即使返回了一条记录。改为调用 first(),您将获得集合中的第一个(也是唯一一个 - 在您的情况下)对象:
$main_image = $property->images()->mainImage()->first();