我有2张桌子
cars (id, title)
parts (id, title)
我希望为每辆车配备很多部件以及特定车型的这部分价格......
我认为最好的方法是通过表格将它们联系起来:
car_parts(id, car_id, part_id, price)
如何在Laravel的Eloquent中定义这样的关系?
我想做
$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
答案 0 :(得分:1)
如果price
模型中包含pivot
,则withPivot
可以使用public function parts ()
{
return $this->belongsToMany('Part', 'car_parts', 'car_id', 'part_id')
->withPivot('price');
}
:
map
然后您可以parts
覆盖$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,
];
});
集合以获取所需的数组:
{{1}}