Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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 如何使用Laravel eloquent在多个表中存储数据_Php_Laravel_Eloquent - Fatal编程技术网

Php 如何使用Laravel eloquent在多个表中存储数据

Php 如何使用Laravel eloquent在多个表中存储数据,php,laravel,eloquent,Php,Laravel,Eloquent,我有一个有多种媒体的模块。我想用eloquent将数据存储在三个表中。我的桌子如下 用户、驾驶会话、媒体 ,DrivingSession模型包含用户id,媒体模型具有驾驶会话id。我想将特定用户创建的驾驶会话图像/视频存储在媒体模型中。我的模型函数为 Users.php 公共功能驱动会话(){ 返回$this->hasmany(DrivingSession::class); } DrivingSession.php 公共函数用户(){ 返回$this->belongtomany(用户::类);

我有一个有多种媒体的模块。我想用eloquent将数据存储在三个表中。我的桌子如下

用户、驾驶会话、媒体 ,DrivingSession模型包含用户id,媒体模型具有驾驶会话id。我想将特定用户创建的驾驶会话图像/视频存储在媒体模型中。我的模型函数为

Users.php

公共功能驱动会话(){
返回$this->hasmany(DrivingSession::class);
}
DrivingSession.php

公共函数用户(){
返回$this->belongtomany(用户::类);
}
公共职能媒体(){
返回$this->hasMany(媒体::类);
}
Media.php

公共功能驱动会话(){
返回$this->belongtomany(DrivingSession::class);
}

我想在DrivingSessions表中存储用户id以供参考,并将附加的介质存储到Medias表中。如何做到这一点?

如果每个驾驶会话只有一个用户,那么它应该是一种归属关系

public function user()
{
 return $this->belongsTo(User::class);
}
如果您已经使用用户id设置了db表,那么您应该能够运行

$user->drivingsessions()->save($driving_session);
这将自动填充驱动会话中的user_id列

你也会在媒体上做类似的事情,我认为你更可能想要的是属于自己,而不是属于别人

$driving_session->medias()->save($media);
如果您正在创建资源,则可以使用下面的

$driving_session = $user->drivingsessions()->create([
    'title' => $request->input('title'),
]);
然后,您可以使用捕获的资源更新媒体

$driving_session->medias()->create([
    'media' => $request->input('media');
])

?? <代码>布隆戈曼尼??拼写错误我已经编辑了这个。你可以使用attach()使它变成这样$user=user::find(1)$drvsess=新驱动会话()$drvess->titel=$request->title$用户->驱动会话()->保存($drvess)$媒体=新媒体()$drvsess->media()->save($request->media);是这样的吗???是的,但是如果媒体来自上传,那么你必须先处理文件,如果是链接,那么它应该是这样工作的。如果有一条捷径,我会修改我的答案。没问题@Muhammed,别忘了把答案标为正确。