2 回答
TA贡献1735条经验 获得超5个赞
我不得不假设您已经正确设置了模型关系,因为您没有提供模型代码来查看。
值得注意的是,Laravel 会自动尝试根据 2 个主表按字母顺序计算数据透视表的内容,并且由于 u 在 v 之前,因此默认数据透视表将user_vehicle不是vehicle_user。您可以保持这种方式,但您需要更新模型中的关系以反映这一点。
现在,我有一辆汽车和一名用户。但是在 Vehicle_users 中有 5 条记录。他们每个人都使用相同的 user_id 和 Vehicle_id。
这似乎很奇怪。如果你只在你的每1个记录user和vehicle表格,你应该仅记录在数据透视为好。也许你的验证有问题?
如何从数据透视表中获取所有这 5 条记录及其相应的 created_at 值以及车辆表中的一些列,然后,我还应该能够提供 user_id = 5 的位置
如果您要返回的主要内容是数据透视表,而不是数据vehicle或user表数据,我会考虑使数据透视表本身成为模型。与用户和车辆的 hasOne 关系。那么你可以做类似的事情
UserVehicle::with('vehicle')->whereHas('user', function($query){
$query->where('id', 5);
})->get();
这将返回主数据透视表数据及其相关的车辆型号列,其中用户 ID = 5。
TA贡献1775条经验 获得超11个赞
尝试这样的事情:
在用户模型中
public function vehicles()
{
return $this->belongsToMany('App\Vehicle')
->withTimestamps();
}
如果需要,您可以反转关系。
现在,如果您想在控制器中获取用户的车辆
public function getVehicles($id)
{
$user = User::find($id);
foreach ($user->vehicles as $vehicle)
{
echo $vehicle->pivot->created_at; //this is coming from the pivot table
echo $vehicle->info; //this is from the vehicle table
}
}
- 2 回答
- 0 关注
- 188 浏览
添加回答
举报