首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确处理叶片模板中模型之间的关系?

如何正确处理叶片模板中模型之间的关系?
EN

Stack Overflow用户
提问于 2022-11-13 16:03:31
回答 2查看 27关注 0票数 0

我在尝试创建购物车页面。从控制器,我得到了一系列的订单项目。订单项目有外键"meal_id“-与餐桌餐的关系。我需要访问连接的餐饮对象,以显示信息。我该如何正确地做这件事?我试图在刀片模板中包含php密钥:

代码语言:javascript
复制
        @foreach($order_items as $order_item)
                ...
                @php
                    $meal = \App\Models\Meal::where('id', '=', $order_item->meal_id)->get();
                @endphp
                ...
        @endforeach

但不起作用。当然,我可以发送两个不同的数组的order_items和膳食,并希望,该序列将是平等的.或者我可以以某种方式发送一个带有联合表的数组。但难道没有更简单的方法来做到这一点吗?

EN

回答 2

Stack Overflow用户

发布于 2022-11-13 16:20:52

您需要定义模型之间的关系,这样您就可以通过雄辩的ORM访问它,并且可以在刀片模板中执行类似的操作,例如:

代码语言:javascript
复制
$order_item->meals;

您可以阅读更多关于Laravel关系以及如何设置每种关系这里的内容。

票数 0
EN

Stack Overflow用户

发布于 2022-11-13 17:23:47

您不能在视图文件中使用数据库,这既不是干净的代码,也不是有用的,它导致了一个名为N+1问题的问题,解决方案是在模型类内创建一个关系,您可以在laravel.com中找到更多关于关系的信息,无论如何,这里有一个示例:首先在Order模型中创建一个名为meals的方法,然后您需要选择您应该使用的关系,在您的情况下,关系有很多,因为餐中有很多订单项,所以在餐方法中使用如下:return $this->belongsTo(Order::class)。关于更多的例子,我建议您在laravel.com上看到有说服力的关系--它们有一个很好的文档来简化这些事情,在创建关系之后,在将$order_items传递到视图之前,您应该加载关系,有些是这样的:Order::with('meal')->get()或者如果您已经有了一个实例化,您可以使用$orders->load('meal'),这是几种调用关系的方法,但无论如何,请尝试在视图部分或任何内部循环之外执行该关系。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74422555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档