【问题标题】:larvel blade templates and elequent models -- how to get first element in many relationshiplaravel 刀片模板和雄辩的模型——如何在许多关系中获取第一个元素
【发布时间】:2018-12-18 17:09:07
【问题描述】:

我有以下雄辩的模型(删除代码以简化此问题)。我正在尝试获取第一张图片

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 }}

我得到 Trying to get property 'name' of non-object`

如果我尝试

{{ $design->images[0]->name }}

我得到未定义的偏移量:0

如果我这样做了

@json ($design->images->first())

我得到(有效)

{"id":1,"name":"Image 1 Design 1","thumb":"images/main_thumb.jpg","image":"images/main_large.jpg","design_id":1 ,"created_at":"2018-12-11 20:10:03","updated_at":"2018-12-11 20:10:03","deleted_at":null}

如何获得刀片模板中的第一张图片?为什么我得到这个奇怪的输出?

【问题讨论】:

    标签: laravel laravel-blade


    【解决方案1】:

    发生错误是因为最新的$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
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-16
    • 2016-11-26
    • 2019-02-12
    • 1970-01-01
    • 2016-01-11
    • 2013-06-04
    • 2018-02-19
    相关资源
    最近更新 更多