我不确定这是否可以完成,但我有 2 个表:
parts:
id part_number description multiplier kit type
===============================================================================
2012 ADH01-PRCD01-E Program disc 1.00 0 3
2013 ADH01-STHO01-E Objectives Worksheet 1.00 0 3
2014 ADH01-STPT01-E Student Post-test vA 1.00 0 3
2015 ADH01-STPT02-E Student Post-test vB 1.00 0 3
kit_parts:
id kit_id part_id
======================
1 2012 2013
2 2012 2014
3 2012 2015
如果套件已设置在零件表中,则需要查看套件零件才能知道还包含哪些内容。
我正在尝试弄清楚如何使用单个模型在 Laravel 中建立这种关系。
有人知道这是否可行吗?
谢谢
最佳答案
假设每个零件仅属于一个套件,您可以在零件模型中使用 kit
列上的自引用一对多关系来执行此操作:
public function kits()
{
return $this->hasMany('Part', 'kit', 'kit');
}
对于任何单个部件(例如部件 #2012),您可以通过以下方式获取其套件中的所有部件:
$kitParts = Part::find(2012)->kits;
<小时/>
如果您需要检索关联的部件作为多个部件查询的一部分,您可以预先加载关系,以避免必须对结果集中的每个部件运行套件查询:
$parts = Part::with('kits')->get();
...因此结果集 $parts
的每个元素现在都将具有您可以访问的 kits
属性:
foreach($parts as $part) {
//the part
foreach ($part->kits as $kit) {
// the parts in this kit
}
}
关于mysql - 与 2 个表的 Eloquent Pivot 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26427905/