2016-09-15 7 views
1

私は雄弁な関係でデータを保存しようとしています。3つの関係が雄弁にデータを保存する

私は以下の3つのテーブルを持っています:ユーザテーブル、カテゴリテーブル、およびポストテーブル。

ポスト表

Schema::create('posts', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('category_id')->unsigned(); 
     $table->integer('user_id')->unsigned(); 
     $table->string('heading'); 
     $table->timestamps(); 

     $table->foreign('category_id')->references('id')->on('categories'); 
     $table->foreign('user_id')->references('id')->on('users'); 
}); 

関係:

カテゴリー:

public function posts() { 
    return $this->hasMany('App\Post'); 
} 

ポスト:

public function user() { 
    return $this->belongsTo('App\User'); 
} 

public function category() { 
    return $this->belongsTo('App\Category'); 
} 

ユーザー:

public function posts($category) { 
    return $this->hasMany('App\Post'); 
} 

私の問題は、作成機能で見出しを渡すだけで投​​稿を保存するにはどうすればいいですか。私はその関係を使いたい。

$data = ['heading' => $heading]; 
$user->posts()->category()->create($data); 

これは原料のこの種を行うことは可能です。例として、私はこの種のコードを使用したいですか?

またはこれを達成するための他の簡単な方法。私はこのような関係を利用してポストを作成する必要があり

EDIT

。プロセスごとのよう

  • ユーザーは、私が カテゴリIDと一緒にデータを取得する元のフォームをいっぱいになります。

  • ここで、指定したカテゴリIDに関連するユーザーのデータを作成する必要があります。

答えて

1

あなたがposts()メソッドを呼び出した後、あなたは、モデルの関係(唯一のクエリービルダー)を取得することはできませんので、あなたがcategory()関係のメソッドにアクセスしないので、それはです。 postsと1対多数のの関係であり、あなたはデータを作成するために参照するレコードをexacly知っていません。

EDIT あなたが唯一の最善の方法を新しいpostエントリを作成する場合、これは次のとおりです。

$data = ['heading' => $heading, 'category_id' => $putHereCategoryId]; 
$user->posts()->create($data); 

あなたは、新しいポストのエントリのために何とか願望カテゴリのIDを取得する必要があります。

+0

実際には、カテゴリではない投稿を作成する必要があります。ユーザーは投稿データとカテゴリIDを取得する場所から投稿フォームを送信します –

+0

私のエントリを編集します –

+0

カテゴリオブジェクトを使用して投稿を保存することは可能ですか?私はデータ配列のカテゴリIDを送信したくありません。私は 'data'に' heading'だけを送ろうとしています –