php - 总是在 Laravel Eloquent 中获取关系模型的相关模型
问题描述
我有三个 Eloquent 模型:
Company
,一个公司OrdersArea
有Localization
很多订单区域,订单区域总是有一个本地化。
我需要让 Orders Area 模型始终加载本地化
如果我这样做:
$company = auth()->user()->company;
我得到了没有 OrdersArea 的登录用户公司,没关系。
接下来我可以这样做:
$company->ordersArea;
然后我有 $company 相关的模型 - OrdersArea - 但是这个模型本身没有本地化,但我需要总是得到这个。
在这种情况下:
$ordersArea = OrdersArea::find($id);
我还想通过模型获得具有本地化属性($ordersArea->localization)的 $odersArea。
如何做到这一点 - 加载/获取 $ordersArea 总是与相关的本地化?
解决方案
要使用关系加载本地化ordersArea()
,您可以使用急切加载。您可以在文档中阅读有关此内容的更多信息:Eager Loading。
例子
$company->ordersArea()
->with('localization')
->first();
或者,您可以将 添加protected $with = ['localization'];
到您的OrdersArea
模型中。这将始终使用OrdersArea
. 仅当始终需要该关系时才应使用它。
您还可以在检索到父模型后检索关系。这称为延迟加载。
$ordersArea = OrdersArea::find($id);
$ordersArea->load('localization');
推荐阅读
- sql - SQL Sum count of product by Member 和产品 YTD 的产品计数
- html - 元素内不同数量的 div 列的水平滚动
- postgresql - 我应该使用复合主键来加快 PostgreSQL 中基于时间戳的选择吗?
- docker - 使用 docker 命令将 Jager-agent 配置为 FluentD 等 UDP 服务器
- r - R:以第一个索引为起点的滚动标准偏差并忽略 NA
- laravel - 在查询中过滤(搜索引擎)的最佳方法
- c++ - 在 Sql server time 数据类型中保存 PC 时间并在 QT 中读回
- python - 如何将变量值从 Python 脚本传输到 Bash 脚本
- linux - linux -x86 是否有设备树(在哪里)?
- sql - 如果sql数据库中的表中存在少量列,如何标记是