【发布时间】:2016-09-22 15:35:15
【问题描述】:
我有以下表格布局:
deals:
- id
- price
products:
- id
- name
deal_product:
- id
- deal_id
- product_id
metrics:
- id
- name
metric_product:
- id
- metric_id
- product_id
- value
products 和 metrics 与值的枢轴列具有多对多关系。
deals 和 products 也具有多对多关系。
我可以使用 $product->metrics 获取产品的指标,但我希望能够获得与交易相关的所有产品的所有指标,因此我可以执行以下操作:$deal->metrics。
我目前在我的Deal 模型中有以下内容:
public function metrics()
{
$products = $this->products()->pluck('products.id')->all();
return Metric::whereHas('products', function (Builder $query) use ($products) {
$query->whereIn('products.id', $products);
});
}
但这不会返回关系,所以我不能急切地加载它或从中获取相关模型。
它需要采用关系格式,因为它们需要为我的用例预先加载。
感谢您的帮助!
【问题讨论】:
-
我曾一度落入同一个兔子洞;这是我为社区提出并回答的问题。老实说,我不是 100% 确定这是最干净的解决方案,但我没有时间回去重新考虑它。但是,它确实有效,您可以让它在尽可能多的表中工作,以获得这种关系Have a look here
-
@Ohgodwhy 这行得通!但我忘了提到我需要它以标准数据透视格式返回
metric_product中的value列。如果您不确定如何执行此操作,我将创建一个新问题。
标签: laravel laravel-5 laravel-5.2