に雄弁多く、モデル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の関連付けを使用する必要が
メディアモデルでも 'belongsToMany'を使うべきです。 – Laerte
逆の関係ではありませんか?何故ですか?私は新しく、それが偉大であることを理解する宣言があれば –
あなたの問題を解決するかどうかはわかりませんが、多くの人が逆関係を持っています。ピボットは常に両方のキー – Laerte