私は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をピボットテーブルに追加します。
ご協力いただきありがとうございます。
https://laravel.com/docs/5.5/eloquent-relationships#many-to-many続きを読みます。 Laravelは、同じ機能で作成されているため、関連付ける必要があると想定することはできません。 – apokryfos