3
votes

I've Module that have multiple media. I want to use eloquent to store data in three table. My tables are as follow

users, DrivingSession, Media ,DrivingSession model contains the user_id and Media model have the driving_session_id. I want to store DrivingSession image/videos created by specific user inside the Media model.My model functions are.

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

I want to store user_id for reference in DrivingSessions table and the attached Media to Medias table. how can I do this ?

1
?? blongsToMany ?? Spelling errorRiggsFolly
i've edited this.Muhammad
you can use attach()Chandni Soni

1 Answers

1
votes

If there is only 1 user per driving session then it should be a BelongsTo relationship.

public function user()
{
 return $this->belongsTo(User::class);
}

Providing that you have setup your db table with a user_id you should then be able to run

$user->drivingsessions()->save($driving_session);

And that will automagically populate the user_id column in the drivingsession.

You would do a similar thing on media and again I think it is more likely you want belongsTo rather than belongsToMany;

$driving_session->medias()->save($media);

If you are creating the resource then you can use the below

$driving_session = $user->drivingsessions()->create([
    'title' => $request->input('title'),
]);

Then you can use the captured resource to update the media

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