Как хранить данные в нескольких таблицах с помощью Laravel Eloquent

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

пользователи, DrivingSession, СМИ , Модель DriveSession содержит идентификатор user_id, а модель Media — Driving_session_id. Я хочу хранить изображения/видео DrivingSession, созданные конкретным пользователем, внутри модели Media. Мои функции модели.

Пользователи.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);
}

Медиа.php

public function drivingSession(){
    return $this->belongsToMany(DrivingSession::class);
}

Я хочу сохранить user_id для справки в таблице DrivingSessions и прикрепленной таблице Media to Medias. как я могу это сделать ?

?? blongsToMany ?? Орфографическая ошибка

RiggsFolly 09.04.2019 12:10

я отредактировал это.

Muhammad 09.04.2019 12:11

вы можете использовать прикрепить()

Chandni Soni 09.04.2019 12:54
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
3
510
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если на сеанс вождения приходится только 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');
])

так что это будет что-то вроде этого? $user = Пользователь::find(1); $drvsess = новая сессия вождения(); $drvess->title = $request->title; $user->drivingSession()->save($drvess); $медиа = новые медиа(); $drvsess ->media()->save($request->media); это что то такое???

Muhammad 09.04.2019 14:03

Да, но если медиаданные загружены, вам придется сначала обработать файл, а если это ссылка, то он должен работать именно так. Также, если создать, то есть короткий путь, я исправлю свой ответ.

ColinMD 09.04.2019 14:13

Нет проблем @Muhammed, не забудьте отметить ответ как правильный.

ColinMD 09.04.2019 20:29

Другие вопросы по теме