我有以下有说服力的模型(删除代码以简化此问题(。我正在尝试获得第一个图像
class Design extends Model
{
use SoftDeletes;
protected $guarded = ['id','tags','keywords'];
public function images()
{
return $this->hasMany(DesignImage::class);
}
...
}
class DesignImage extends Model
{
use SoftDeletes;
public function design()
{
return $this->belongsTo(Design::class);
}
}
然后我有下面的代码,它被传递到刀片模板
$data['designs'] = Design::where('quantity','>',0)->get();
return view('mailings.form',$data);
模板(工作正常;我得到所有图像的名称
@foreach($design->images as $image)
{{ $image->name }}
@endforeach
但如果我尝试
{{ $design->images->first()->name }}
我得到正在尝试获取非对象`的属性'name'
如果我尝试
{{ $design->images[0]->name }}
我得到未定义的偏移:0
但是,如果我做
@json ($design->images->first())
我得到(有效(
{"id":1,"name":"Image 1 Design 1","thumb":"images/main_thumb.jpg">
如何获取刀片模板中的第一个图像?为什么我得到这种奇怪的输出?
由于最近的一个$design
没有image
,因此发生错误。试试这个代码
@foreach($designs as $design)
// your code
@php
$firstImage = $design->images()->first();
@endphp
{{ !empty($firstImage->name) ? $firstImage->name : ''}}
// other part ofcode
@endforeach
也可以使用控制器内优化此代码
$data['designs'] = Design::where('quantity','>',0)->with('images')->get();
return view('mailings.form',$data);
可视
@foreach($designs as $design)
// your code
@php
$firstImage = $design->images->first();
@endphp
{{ !empty($firstImage->name) ? $firstImage->name : ''}}
// other part ofcode
@endforeach