2016-06-30 7 views
1

に雄弁多く、モデルLaravel 5.2 - I 2つのモデルと3つのマイグレーションを有する多くの関係

1-Mediaある:

<?php 
namespace App; 
use Illuminate\Database\Eloquent\Model; 
class Media extends Model 
{ 
    public function gallery(){ 
     return $this->hasMany('App\Gallery', 'media_gallery'); 
    } 
} 

2-Gallery

<?php 
namespace App; 
use Illuminate\Database\Eloquent\Model; 
class Gallery extends Model 
{ 
    public function media(){ 
     return $this->belongsToMany('App\Media', 'media_gallery'); 
    } 
} 

およびのマイグレーションがmediaテーブルの

1-であるスキーマがある:

Schema::create('media', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->timestamps(); 
}); 

2-galleryテーブルのスキーマは次のとおり

Schema::create('galleries', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->timestamps(); 
    $table->string('path'); 
    $table->string('type'); 
}); 

3-media_galleryの参加表多対多関係:

Schema::create('media_gallery', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->timestamps(); 
    $table->integer('media_id'); 
    $table->integer('gallery_id'); 
}); 

コンセプト:私はGalleryテーブルに項目をアップロードすることができますよりもので、ドロップゾーンがインストールされ動作していますが、私がやりたいことは、それが1つを保持しているように、私はMediaアイテムを作ることですよりGallery項目、およびgallery項目は、私が試した何

多くmedia項目に関連することができます。 私はアイテムのidを保持する]チェックボックスで、各ギャラリーのアイテムを保持している形をした、これはどうやってハンドリングするの?

public function MediaPostUpload(Request $request){ 

     $media = new Media(); 
     $media->save(); 

     //fetching ids of checked boxes 
     $galleryItems = $request['galleryItems']; 
     $ids = array(); 
     if(!empty($galleryItems)){ 
      foreach($galleryItems as $itemId){ 
       $ids[] = $itemId; 
      } 
     } 
     $media->gallery()->attach($ids); 
} 

エラーが現れる...私のコントローラでそれをE:

SQLSTATE [42S22]:カラムが見つかりません: 'where句' で1054不明な列 'galleries.media_gallery' (SQL:select * from galleriesここではgalleriesです。 media_gallery = 1および galleriesである。 media_galleryあなたも、あなたのメディアモデルにbelongsToManyの関連付けを使用する必要が

+0

メディアモデルでも 'belongsToMany'を使うべきです。 – Laerte

+0

逆の関係ではありませんか?何故ですか?私は新しく、それが偉大であることを理解する宣言があれば –

+1

あなたの問題を解決するかどうかはわかりませんが、多くの人が逆関係を持っています。ピボットは常に両方のキー – Laerte

答えて

1

)nullではない:逆関係を持っていない

class Media extends Model 
{ 
    public function gallery(){ 
     return $this->belongsToMany('App\Gallery', 'media_gallery'); 
    } 
} 

多くの多くにピボットがするので、それは常に同じ関係であります両方のキーがあります。

関連する問題