2017-10-07 12 views
0

私はLaravelのドキュメントやそれに類似した質問をStackで精査しましたが、動作するものは見つけられません。Laravel 5.4以上:ピボットテーブルへの投稿はありません

ポストテーブルとタグテーブルからそれぞれpost_idとtag_idを収集するためのpost_tagという設定のピボットテーブルがありますが、そうではありません。データはポストテーブルとタグテーブルに完全にポストされますが、post_tagテーブルは空のままです。ここで私のコードは、私はこれまでに見つけることができるすべてを試したので、私は答えを提供することができるか、少なくとも正しい方向に私を指すことができる人に永遠に借金があります。彼らは多対多の関係に関連していないのであれば

だけで確認する、私は、各ファイルからコードのチャンクを省略しました:

Post.php

class Post extends Model 
{ 

    public function tags() 
    { 
     return $this->belongsToMany(Tag::class); 
    } 

} 

Tag.php

class Tag extends Model 
{ 

public function posts() 
{ 
    return $this->belongsToMany(Post::class); 
} 

} 

PostController.php

public function store(Request $request) 
{ 
    $this->validate(request(), [ 

     'content' => 'required', 
     'tag' => 'required' 
    ]); 

    Post::create([ 

     'content' => request('content'), 
     'user_id' => auth()->id() 
    ]); 

    Tag::create([ 

     'tag' => request('tag'), 
    ]); 

    return redirect('/'); 

} 

create_post_tag_table.php

class CreatePostTagTable extends Migration 
{ 
public function up() 
{ 
    Schema::create('post_tag', function (Blueprint $table) { 


     $table->integer('post_id'); 
     $table->integer('tag_id'); 
     $table->primary(['post_id', 'tag_id']); 
    }); 
} 

私はまた、明示的にデータベースに外部キーを設定しようとしました。 Sequel Proでこれらをチェックしたときに、これらは実際に外部キーとして表示されましたが、新しい投稿を作成するたびに私のpost_tagテーブルはまだ空になっていました。

私は、手動でpost_tagテーブルにIDを付加してみましたが、Laracastの基本ビデオシリーズからこれを知っていましたが、これを私のコードに入れる方法は言及されていません新しい投稿を作成するたびに、動的にpost_idとtag_idをピボットテーブルに追加します。

ご協力いただきありがとうございます。

+1

https://laravel.com/docs/5.5/eloquent-relationships#many-to-many続きを読みます。 Laravelは、同じ機能で作成されているため、関連付ける必要があると想定することはできません。 – apokryfos

答えて

3

モデルを取り付けてください。それは次のようになります。

は、あなたがポストやタグを作成しているが、それらが関連しなければならないという兆候はありません

+0

本当にありがとうございました!私はこれを1週間以上修正しようとしており、これを単なる数分で解決する手助けをしてくれました。 –

+0

@SunilSandhu問題ありません。ドキュメントを読むだけでOKです –

関連する問題