代码之家  ›  专栏  ›  技术社区  ›  Kamal Panhwar

使用透视表作为对另一个模型的引用

  •  0
  • Kamal Panhwar  · 技术社区  · 6 年前

    我在做拼车服务,所以我有下面的表模式 这个 user , cars , user_car (pivot table,它还有其他字段,比如plate_number),所以我可以添加许多汽车,用户可以从已经添加的汽车中选择自己的汽车,并提供附加信息。那辆车就是他的车。

    现在我有另一张桌子 ride 也可以参考 id 属于 cars_user 我把这段关系 汽车 users . 但是我们之间的关系 Ride car_user 型号,as 汽车使用者 可以坐很多次车吗?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Erubiel    6 年前

    确保数据透视表 user_car 有一个主键列,它应该类似于:

    id, user_id, car_id
    

    实施 UserCar 那张桌子的模型。

    然后在您的 Ride 像这样的模型

    public function user_car(){
    
        return belongsTo('\App\UserCar', 'user_car_id', 'id');
    
    }
    

    然后,您还可以使用赋值来检查透视表的循环

    关于你的 用户车 你可以有这样的模型:

    public function rides(){
    
        return hasMany('\App\Ride', 'user_car_id', 'id');
    
    }
    

    现在,您可以将其作为任何其他模型引用,从 User Car 模型。

    我个人会给这张桌子打个电话,做其他的模型,比如 car_assignations , CarAssignation ,但那是你的选择。

        2
  •  0
  •   atf.sgf    6 年前

    您应该为3个表定义pivot cars,users,ride in every three model您创建了与其他两个表的2个关系 所以透视表有三列,分别是用户id、汽车id、骑乘id 例如,您的用户模型如下:

    public function car() {
    return $this->belongsToMany('car', 'user_car_ride');
    }
    
    public function ride() {
    return $this->belongsToMany('ride', 'user_car_ride');
    }
    

    user_car_ride是您的数据透视表名称