Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将附加到特定用户id的数据透视表中的记录获取到其他表中_Php_Laravel - Fatal编程技术网

Php 如何将附加到特定用户id的数据透视表中的记录获取到其他表中

Php 如何将附加到特定用户id的数据透视表中的记录获取到其他表中,php,laravel,Php,Laravel,我用的是拉威尔。我有车辆和用户表的多对多关系。所以有三张桌子 vehicles(id, vrm_id, info, created_at, updated_at) users(id, name, created_at, updated_at) vehicle_user(id, user_id, vehicle_id, created_at, updated_at) 现在,我有一辆车和一个用户。但车内用户有5条记录。他们每个人都有相同的用户id和车辆id 问题:我想通过laravel雄辩的无

我用的是拉威尔。我有车辆和用户表的多对多关系。所以有三张桌子

vehicles(id, vrm_id, info, created_at, updated_at)

users(id, name, created_at, updated_at)

vehicle_user(id, user_id, vehicle_id, created_at, updated_at)
现在,我有一辆车和一个用户。但车内用户有5条记录。他们每个人都有相同的
用户id
车辆id

问题
:我想通过laravel雄辩的无连接来实现这一点

我如何从pivot表中获取所有这5条记录及其相应的
创建值,以及
vehicles
表中的一些列,然后,我还应该能够提供
,其中
用户id=5


我尝试了
Vehicle::with('users')
,但这只返回vehicles表中的一条记录。

尝试以下方法:

在用户模型中

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
        }
    }

我不得不假设您已经正确设置了模型关系,因为您没有提供模型代码来查看

值得注意的是,Laravel会自动尝试根据两个主表按字母顺序计算出数据透视表的内容,并且由于u位于v之前,默认数据透视将是
user\u vehicle
而不是
vehicle\u user
。您可以保持这种方式,但需要更新模型中的关系以反映这一点

现在,我有一辆车和一个用户。但车内用户有5个 记录。他们每个人都有相同的用户id和车辆id

这似乎很奇怪。如果您的
用户
车辆
表中只有一条记录,您的数据透视中也应该只有一条记录。也许你的验证有问题

我如何从数据透视表中获取所有这5条记录及其 相应的值和车辆中的一些列 表之后,我还应该能够提供where user\u id= 五,

如果您想返回的主要内容是数据透视表,而<代码>车辆< /代码>或<代码>用户< /代码>表数据,我将考虑将PIOVT作为自己的模型。与用户和车辆都有一个关系。然后你可以做类似的事情

UserVehicle::with('vehicle')->whereHas('user', function($query){
    $query->where('id', 5);
})->get();

这将返回主数据透视表数据及其相关的车辆型号列,其中用户id=5。

因此基本上,我得到了用户和车辆。用户来搜索车辆。我想存储哪个用户在什么时间搜索了什么内容。这就是为什么我有透视表。(id、用户id、车辆id、创建位置)。你认为这个模式做得不正确吗?如果你专门记录用户搜索,我可能会创建一个搜索表,将关系返回到用户和车辆,而不是实际的轴心。因为轴心表示用户有很多车辆,而他们没有。他们只是在找。人们在寻找什么?您如何知道车辆ID是用户搜索的车辆ID?我可能只需要他们搜索的任何东西的字符串列。