Laravel “拉雷维尔”;“三方”;透视表?
作品: 我的网站上有一个叫做“杂货”的页面。为此,我使用了两个表:Laravel “拉雷维尔”;“三方”;透视表?,laravel,pivot,relation,Laravel,Pivot,Relation,作品: 我的网站上有一个叫做“杂货”的页面。为此,我使用了两个表: Categories [$this->hasMany('App\Product')] - id - name Products [$this->belongsTo('App\Category')] - id - category_id - name 简单的东西。在我的查询中,我收集所有类别及其对应的产品杂货=类别::with('products')->get() 然后在我的视图中,我可以访问所有类别及其产品,并很
Categories [$this->hasMany('App\Product')]
- id
- name
Products [$this->belongsTo('App\Category')]
- id
- category_id
- name
简单的东西。在我的查询中,我收集所有类别及其对应的产品<代码>杂货=类别::with('products')->get()代码>
然后在我的视图中,我可以访问所有类别及其产品,并很好地列出它们,所有类别将显示一次,类别名称下方将显示我的产品。一切都好。例如:
Category Alcohol
- Beer
- Wine
- Whisky
Category Bread
- Brown Bread
- White Bread
。。等等
然后就变得棘手了,至少对我来说是这样。到现在为止,我一直在用上面的方法制作一个简单的杂货清单。但现在我想添加另一个名为“Groceries”的表,我在其中存储杂货清单。像这样:
Groceries
- id
- name
因此,我认为数据透视表会派上用场,但我不确定数据透视表中存储的内容以及如何访问所有数据:
category_product?
grocery_product?
- id
- grocery_id
- product_id?
- category_id? I don't think I need to store this in the pivot table, it can be accessed through the Products model?
- number
我一直很难理解一个“简单”的数据透视表,现在它变得更加棘手,有了一个“三向”数据透视表
我希望在我的数据透视表中存储以下内容:
杂货店列表的杂货店id。但后来我被卡住了。我还应该在pivot表中存储什么,以便我能够继续使用上述方法,但使用额外的参数,如:
$groceries = Grocery::find($id)->with('categories')->with('products'); ?
Category Alcohol
- [ ] Beer
- [ ] Wine
- [ ] Whisky
Category Bread
- [ ] Brown Bread
- [ ] White Bread
我个人的想法是,我应该在我的杂货模型中使用以下关系:
public function categories()
{
return $this->hasMany('App\Category')->with('App\Product');
}
任何指向正确方向的指针都可以帮助我将思想指向正确的方向,这已经很有帮助了
编辑:
模型用户:
public function groceries()
{
return $this->hasMany('App\Grocery');
}
型号类别:
public function products()
{
return $this->hasMany('App\Product');
}
模型产品:
public function category()
{
return $this->belongsTo('App\Category');
}
模型杂货:
// No relations yet
编辑#2:
在我的groceries.index页面上,我有一个当前登录用户的简单杂货清单。他们可以创建、编辑或删除购物清单
一旦用户单击“创建杂货清单”,我将显示一个包含所有类别及其对应产品的视图,如下所示:
$groceries = Grocery::find($id)->with('categories')->with('products'); ?
Category Alcohol
- [ ] Beer
- [ ] Wine
- [ ] Whisky
Category Bread
- [ ] Brown Bread
- [ ] White Bread
[]代表复选框。用户可以选择要添加到列表中的产品。保存后,我想将杂货店列表ID存储在一个透视表中,该透视表包含所选的产品ID
然后,在编辑表单上,我想显示相同的视图,但已选择保存的产品。因此,我认为实现这一点的最佳方法是将杂货店ID存储在透视表中,它是选定的产品。然后,在编辑表单上,我只需检查产品ID是否存在,如果存在,则应选中复选框。但我一直在思考这些关系应该是什么样的,我实际上应该在我的数据透视表中存储什么,产品id是我说过的还是我根本不应该使用数据透视表
有许多
“杂货清单”,其中每个都有许多
产品归入多个列表
,其中id位于(1,2,3)
,这在性能上比常规联接差一点。请参阅以下参考资料:
以下是我的做法:
有许多
“杂货清单”,其中每个都有许多
产品归入多个列表
,其中id位于(1,2,3)
,这在性能上比常规联接差一点。请参阅以下参考资料:
在您的情况下,什么是杂货清单<代码>用户ID 1有:一瓶葡萄酒、两瓶啤酒、一块奶酪-类似或否?解释杂货与类别和/或产品之间的关系。请提供类别、杂货和产品之间的关系。抱歉,添加到above@Kaloyan多伊奇诺夫。一个用户可以有多个购物清单。杂货清单只是由产品清单组成。但我认为我确实需要在作品中详细阐述这一点。威尔:)在你的情况下,什么是杂货清单<代码>用户ID 1有:一瓶葡萄酒、两瓶啤酒、一块奶酪-类似或否?解释杂货与类别和/或产品之间的关系。请提供类别、杂货和产品之间的关系。抱歉,添加到above@Kaloyan多伊奇诺夫。一个用户可以有多个购物清单。杂货清单只是由产品清单组成。但我想我确实需要在作品中详细说明这一点。威尔:)谢谢,尽管第3和第5是我不确定的事情。但是现在你这样说,它实际上是非常有意义的。现在是时候试着把我的脑袋绕过去了:谢谢,虽然第三和第五是我不确定的事情。但是现在你这样说,它实际上是非常有意义的。现在是时候