Php 雄辩的ORM多对多关系最佳实践
我有两张桌子Php 雄辩的ORM多对多关系最佳实践,php,orm,laravel,eloquent,Php,Orm,Laravel,Eloquent,我有两张桌子 汽车(身份证、头衔) 零件(id、标题) 我想把每一辆车都和很多零件联系起来,并为每一辆车的零件定价 我认为最好的方法是通过表格将它们关联起来: car\u零件(id,car\u id,part\u id,price) 我如何在拉雷维尔的《雄辩》中定义这种关系 我想做什么 $car = Car::find(1); $parts = $car->parts; 我想得到一个像这样的对象数组 { 'id' => 1, 'title' => 'rear fl
汽车(身份证、头衔)
零件(id、标题)
我想把每一辆车都和很多零件联系起来,并为每一辆车的零件定价
我认为最好的方法是通过表格将它们关联起来:
car\u零件(id,car\u id,part\u id,price)
我如何在拉雷维尔的《雄辩》中定义这种关系
我想做什么
$car = Car::find(1);
$parts = $car->parts;
我想得到一个像这样的对象数组
{
'id' => 1,
'title' => 'rear flash',
'price' => '10.00',
},{
...
}
如果我尝试
public function parts(){
return $this->belongsToMany('Part', 'car_parts', 'car_id', 'part_id');
}
我不知道价格
TIA如果您将
价格
包含在withPivot
中,则该价格
可在pivot
型号上获得:
public function parts ()
{
return $this->belongsToMany('Part', 'car_parts', 'car_id', 'part_id')
->withPivot('price');
}
然后,您可以在零件集合上映射,以获得所需的阵列:
$parts = Car::find(1)->parts->map(function ($part)
{
return [
'id' => $part->id,
'title' => $part->title,
'car_id' => $part->pivot->car_id,
'part_id' => $part->pivot->part_id,
'price' => $part->pivot->price,
];
});
当然,我不介意得到一个具有id
,title
,car\u id
,part\u id
,price
的对象数组。id
与part\u id
有何不同?他们不是都一样吗?不,约瑟夫,他们不是。id是包含汽车id和零件id的透视表的id。我没有尝试,因为我使用了完全不同的方法,但非常感谢!