我的模块具有多种媒体。我想用雄辩的方式将数据存储在三个表中。我的表如下
用户,DrivingSession,媒体 ,DrivingSession模型包含user_id,而Media模型包含drive_session_id。我想将特定用户创建的DrivingSession图像/视频存储在Media模型中。我的模型函数是。
Users.php
public function drivingsessions(){
return $this->hasmany(DrivingSession::class);
}
DrivingSession.php
public function user(){
return $this->belongsToMany(User::class);
}
public function Medias(){
return $this->hasMany(Media::class);
}
Media.php
public function drivingSession(){
return $this->belongsToMany(DrivingSession::class);
}
我想将user_id存储在DrivingSessions表和附加的Media to Medias表中以供参考。我该怎么办?
答案 0 :(得分:1)
如果每个驾驶会话只有1个用户,则应该是BelongsTo关系。
public function user()
{
return $this->belongsTo(User::class);
}
假设您已经使用user_id设置了数据库表,那么您应该可以运行
$user->drivingsessions()->save($driving_session);
这将自动在Drivingsession中填充user_id列。
您将在媒体上做类似的事情,我再次想您更可能想要的是belongsTo而不是belongsToMany;
$driving_session->medias()->save($media);
如果您正在创建资源,则可以使用以下内容
$driving_session = $user->drivingsessions()->create([
'title' => $request->input('title'),
]);
然后您可以使用捕获的资源来更新媒体
$driving_session->medias()->create([
'media' => $request->input('media');
])