当前位置: 首页 > 知识库问答 >
问题:

Larvel刀片模板和elequent模型--如何在许多关系中获得第一个元素

顾鸣
2023-03-14

我有以下雄辩的模型(删除了代码,使这个问题变得简单)。我正在努力得到第一个图像

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","拇指":"图像/main_thumb.jpg","图像":"图像/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}

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

共有1个答案

斜昊空
2023-03-14

出现错误是因为最新的$design没有图像。试试这个代码

@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
 类似资料:
  • 问题内容: 我正在阅读Laravel Blade 文档,但无法弄清楚如何在模板内分配变量以供以后使用。我不能这样做,因为那会回显“任何内容”,而我不希望那样。 我知道我可以做到,但这并不优雅。 在Blade模板中是否有更好,更优雅的方法来做到这一点? 问题答案: 不建议在视图中进行操作,因此没有刀片标签。如果您确实想在刀片视图中执行此操作,则可以在编写时打开一个php标签,也可以注册一个新的刀片标

  • 我正在为一个在Laravel中完成的站点编写代码,我知道不建议在Blade模板中编写PHP代码,但在这个例子中,我的可用时间有限。 中间的PHP代码不起作用?

  • 你好,我正试图建立一对多的关系。用户表中的一个用户可以有多个公司,另一边的公司只能有一个用户。 我的公司表迁移是 我的用户模型是 我的公司模式是 我正试图获得特定用户的所有公司 尝试使用whereHas,但对象中没有数据 我的错误在哪里?

  • 我有一个引导滑块,显示最近的帖子,我想要得到3个帖子的标题和图像,并把他们放在img scr和p中,我想把每个项目单独带来,以便能够把它放在代码里面

  • 简介: 我有这些表与他们的模型: 地址表-- 规则: 每个用户只能有一个地址 这里可以进行两种可能的关系规划: > 用户有一个地址和地址属性To User[即一对一关系],但缺点是外键位于地址表中,即user_id字段,通过与其他模型[公司和财产]重复相同的关系,我们将获得地址表中的另外两个外键是[company_id和property_id],那么我们将最终得到3个外键用于3个型号,但每行记录只

  • 在我的观点中,我扩展了一个刀片模板,它充当我的主模板。我有一个ViewComposer设置,它为这个模板提供了许多变量。 我遇到了一种情况,需要在是启动函数的页面。 通过ViewComposer传递的变量是否达到初始视图的范围?或者我需要创建另一个ViewComposer来传递相同的变量。 这最终给了我一个未定义的变量错误。