使用数据透视表作为其他模型的参考

时间:2018-08-25 17:40:08

标签: laravel eloquent

我正在拼车服务,所以我有以下表格架构 usercarsuser_car(数据透视表,它还有其他字段,例如plate_number),因此我可以添加许多汽车,用户可以从我们已经添加的汽车中选择他的汽车并提供附加信息。那辆车将是他的车。

现在我还有另一个表ride,该表也引用了id的引用cars_user,我已经建立了carsusers之间的关系。但是Ridecar_user模型之间的关系是什么,因为car_user可以用于许多游乐设施?

2 个答案:

答案 0 :(得分:0)

确保数据透视表<connectionStrings> <add name="DbConnectionString" providerName="System.Data.SqlClient" connectionString="Data Source=xxx.database.windows.net;Initial Catalog=xyz;Integrated Security=False;User ID=xyz;Password=pass;Connect Timeout=60;Encrypt=False;TrustServerCertificate=False" /> </connectionStrings> 具有主键列,其外观应类似于:

user_car

为该表实现id, user_id, car_id 模型。

然后在您的UserCar模型上将此模型附加一个关系

Ride

然后,您还可以使用分配来查看该数据透视表的游乐设施

在您的public function user_car(){ return belongsTo('\App\UserCar', 'user_car_id', 'id'); } 模型上,您可以看到以下内容:

UserCar

您现在可以从public function rides(){ return hasMany('\App\Ride', 'user_car_id', 'id'); } User模型中像其他任何模型一样引用它。

我个人将调用此表并为其他模型建模,例如Carcar_assignations,但这是您的选择。

答案 1 :(得分:0)

您应该为3个桌子的汽车,用户定义枢轴,在每三个模型中创建2个与其他两个桌子的关系 因此您的数据透视表包含三列,分别为user_id,car_id,ride_id 例如您的用户模型是:

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

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

user_car_ride是您的数据透视表名称