Отношения сводной таблицы Laravel

Сегодня я собираюсь перечислить новую проблему, касающуюся laravel-отношений. Есть три таблицы:

ТАБЛИЦА АЛЬБОМА

Schema::create('albums',  function (Blueprint $table) {
          $table->increments('id');
          $table->string('name');
          $table->string('slug');
          $table->string('image')->default('default.png');
          $table->timestamps();
        });

ФОТО ТАБЛИЦА

Schema::create('photos', function (Blueprint $table) {
          $table->increments('id');
          $table->string('name');
          $table->string('slug');
          $table->string('image')->default('default.png');
          $table->timestamps();

ALBUM_PHOTO (Сводная таблица)

        Schema::create('album_photo',  function (Blueprint $table) {
          $table->increments('id');
          $table->integer('album_id')->unsigned();
          $table->integer('photo_id')->unsigned();
          $table->timestamps();

          $table->foreign('album_id')->references('id')->on('albums');
          $table->foreign('photo_id')->references('id')->on('photos');

В моделях мы можем найти отношения:

АЛЬБОМ

public function photos()
  {
    return $this->belongsToMany('App\Photo');
  }

ФОТО

public function albums()
    {
      return $this->belongsToMany('App\Album');
    }

Проблема возникает в attach. Фактически изображения загружаются, но не связаны с PivotTable:

public function imageupload(Request $request)
    {
      $this->validate($request,[
          'name' => 'required',
          'image' => 'mimes:jpeg,bmp,png,jpg'
      ]);
      // get form image
      $images = $request->file('images');

      $slug = str_slug($request->name);
foreach($images as $image){
      if (isset($image))
      {
//            make unique name for image
          $currentDate = Carbon::now()->toDateString();
          $imagename = $slug.'-'.$currentDate.'-'.uniqid().'.'.$image->getClientOriginalExtension();
//            check album dir is exists
          if (!Storage::disk('public')->exists('photo'))
          {
              Storage::disk('public')->makeDirectory('photo');
          }
//            resize image for album and upload
          $photo = Image::make($image)->resize(1600,479)->stream();
          Storage::disk('public')->put('photo/'.$imagename,$photo);
          //            check album slider dir is exists
          if (!Storage::disk('public')->exists('photo/slider'))
          {
              Storage::disk('public')->makeDirectory('photo/slider');
          }
          //            resize image for album slider and upload
          $slider = Image::make($image)->resize(500,333)->stream();
          Storage::disk('public')->put('photo/slider/'.$imagename,$slider);

      } else {
          $imagename = "default.png";
      }
      $photo = new Photo();
      $photo->name = $request->name;
      $photo->slug = $slug;
      $photo->image = $imagename;
      $photo->save();
    /***************************************************/
      $photo->albums()->attach($request->albums);
    /**************************************************/
      Toastr::success('Photo Successfully Saved :)' ,'Success');
    }
      return redirect()->route('admin.album.index');
    }

Как я могу это решить? Спасибо

$ фото-> альбомы () -> прикрепить ($ запрос-> альбомы); $ запрос-> альбомы - это просто идентификационный номер? Вам нужно только прикрепить идентификационный номер, а не весь объект. Так что в вашем случае это может быть $ request-> album ['id']

Brad Goldsmith 28.12.2018 14:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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 и хотите разрабатывать...
2
1
119
0

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