Как хранить данные в нескольких таблицах с помощью Laravel eloquent - PullRequest
3 голосов
/ 09 апреля 2019

У меня есть модуль, который имеет несколько носителей.Я хочу использовать eloquent для хранения данных в трех таблицах.Мои таблицы следующие:

пользователи, модель DrivingSession, Media, DrivingSession содержит идентификатор user_id, а модель Media имеет Driving_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.как я могу это сделать?

1 Ответ

1 голос
/ 09 апреля 2019

Если в сеансе вождения присутствует только 1 пользователь, это должно быть отношение BelongsTo.

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

При условии, что вы настроили свою таблицу БД с помощью user_id, вы сможете запустить

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

И это автоматически заполнит столбец user_id в водительской сессии.

Вы бы проделали аналогичную работу с носителем, и снова я думаю, что скорее всего вы захотите принадлежать, а не принадлежать ToMany;

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

Если вы создаете ресурс, вы можете использовать ниже

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

Затем вы можете использовать захваченный ресурс для обновления медиа

$driving_session->medias()->create([
    'media' => $request->input('media');
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...