2017-04-16 53 views
0

我有一个表service包含<PK> id<FK> plate_number选择。从3和表2个的外键

然后我有一个表vehicles,其中包含<PK> plate_number和其他不重要的列。

下表是包含<FK> service_id<FK> part_id的结合表part_fix

最后一个是part,其列<PK> id,nameprice

我正在使用Laravel查询构建器,但那不是那么重要,以防万一有人知道如何使用它,查询生成器中的解决方案对我来说会更好,但简单的postgresql查询就好了。

我想select从表service,我想在一个表<PK> id<PK> plate_number显示,并使用绑定表,我要分配部分每个service。我有绑定表,因为有多对多的关系(一个修复/服务可以有很多部分,另外一个部分可以用在autoshop的许多修复中)。

我希望我解释得很好,如果不是,请询问。

回答

0

你可能想这样做

Service::with(['vehicle','parts'])->find($serviceid); 

与人际关系上的服务类中定义类似

public function vehicle() { 
    return $this->belongsTo(Vehicle::class); 
} 

public function parts() { 
    return $this->belongsToMany(Part::class, 'part_fix', 'part_id', 'service_id'); 
} 

这应该允许您加载你是什么后

echo $service->vehicle->plate_number; 
foreach($service->parts as $part) { 
    echo $part->name 
} 
+0

想到这一点,您可能不想使用plate_number作为您的主键,因为根据管辖权,车牌号码可以在其他车辆上重复使用。 – Jason