【问题标题】:Select from 3 tables with 2 foreign keys从具有 2 个外键的 3 个表中选择
【发布时间】:2017-09-12 11:13:33
【问题描述】:

我有一个表service,其中包含<PK> id<FK> plate_number

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

下一个表是绑定表part_fix,其中包含<FK> service_id<FK> part_id

最后一个是part,列有<PK> idnameprice

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

我想从表serviceselect,我想在表中显示<PK> id<PK> plate_number,并使用绑定表,我想为每个service 分配部分。我有绑定表是因为存在多对多关系(一个维修/服务可以有很多零件,而且一个零件可以用于汽车商店的许多维修)。

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

【问题讨论】:

    标签: sql postgresql laravel select join


    【解决方案1】:

    你可能想做类似的事情

    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
    }
    

    【讨论】:

    • 刚刚想到这一点,您可能不想使用 plate_number 作为主键,因为根据管辖范围,车牌号可以在其他汽车上重复使用。
    猜你喜欢
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 2016-09-19
    • 2012-08-15
    • 2013-06-23
    • 2017-08-02
    相关资源
    最近更新 更多