始终在 Laravel Eloquent 中获取关系模型的相关模型
Always get related model of relationship model in Laravel Eloquent
我有三个Eloquent型号:
Company
、OrdersArea
和 Localization
其中一家公司有很多订单区域,而订单区域总是有一个本地化。
我需要让订单区域模型始终加载本地化
如果我这样做:
$company = auth()->user()->company;
我在没有 OrdersArea 的情况下获得了已登录用户的公司,没关系。
接下来我可以做:
$company->ordersArea;
然后我有 $company 相关模型 - OrdersArea - 但这个模型本身没有本地化,但我总是需要得到它。
在这种情况下:
$ordersArea = OrdersArea::find($id);
我还想获得带有模型的本地化 属性 ($ordersArea->localization) 的 $odersArea。
如何做到 - loading/getting $ordersArea 始终具有相关的本地化?
要加载具有 ordersArea()
关系的 Localization,您可以使用预加载。您可以在文档中阅读更多相关信息:Eager Loading.
例子
$company->ordersArea()
->with('localization')
->first();
Alternatively,您可以将 protected $with = ['localization'];
添加到您的 OrdersArea
模型中。这将始终 加载带有OrdersArea
的本地化。只有在 always 需要这种关系时才应该使用它。
您还可以在检索到父模型后检索关系。这叫做Lazy Eager Loading.
$ordersArea = OrdersArea::find($id);
$ordersArea->load('localization');
在 OrdersArea
模型中使用这个 -
protected $with = ['localization'];
每当您查询 OrdersArea
时,它将始终加载 localization
。
我有三个Eloquent型号:
Company
、OrdersArea
和 Localization
其中一家公司有很多订单区域,而订单区域总是有一个本地化。
我需要让订单区域模型始终加载本地化
如果我这样做:
$company = auth()->user()->company;
我在没有 OrdersArea 的情况下获得了已登录用户的公司,没关系。
接下来我可以做:
$company->ordersArea;
然后我有 $company 相关模型 - OrdersArea - 但这个模型本身没有本地化,但我总是需要得到它。
在这种情况下:
$ordersArea = OrdersArea::find($id);
我还想获得带有模型的本地化 属性 ($ordersArea->localization) 的 $odersArea。
如何做到 - loading/getting $ordersArea 始终具有相关的本地化?
要加载具有 ordersArea()
关系的 Localization,您可以使用预加载。您可以在文档中阅读更多相关信息:Eager Loading.
例子
$company->ordersArea()
->with('localization')
->first();
Alternatively,您可以将 protected $with = ['localization'];
添加到您的 OrdersArea
模型中。这将始终 加载带有OrdersArea
的本地化。只有在 always 需要这种关系时才应该使用它。
您还可以在检索到父模型后检索关系。这叫做Lazy Eager Loading.
$ordersArea = OrdersArea::find($id);
$ordersArea->load('localization');
在 OrdersArea
模型中使用这个 -
protected $with = ['localization'];
每当您查询 OrdersArea
时,它将始终加载 localization
。