2017-09-12 3 views
0

私はこれらの2つの非常に単純なモデルを持っているから、1対1の関係を持つ2つのテーブルを更新します。私は単一のテーブルを使用することができましたが、これらのデータセットを分離しておくことが理にかなっていると思いました。Laravelは、どのように単一のフォーム

フォームでは、エピソードとそのコンテンツを同時に編集したいと思いますが、何度か試してみたところ、私はどのように考えていませんでした。

これは私がやっているものです:

public function update(Request $request, $id) 
{ 
    $rules = [ 
     'number' => 'required', 
    ]; 
    $this->validate($request, $rules); 
    $episode = Episode::with('content')->findOrFail($id); 

    $episode->published_at = $request->get('published_at'); 
    $episode->number  = $request->get('number'); 
    $episode->content->title  = $request->get('title'); 

    $episode->update(); 

    return redirect('admin/episodes'); 
} 

この方法は、何もepisodes_contentテーブルに変化しません。私は既存のものに更新したいと思いながら

$episode->published_at = $request->get('published_at'); 
    $episode->number  = $request->get('number'); 
    $episode->active  = $request->get('active'); 

    $episodeContent  = new EpisodeContent; 
    $episodeContent->title = $request->get('title'); 

    $episode->content()->save($episodeContent); 

この方法で、新しいepisodes_content行が作成されます。

は別の試みで、私はこれを試してみました。

答えて

0

子テーブル内の親テーブルとepisode_idのidがあり、私はそれは私があなたのフィールド名を想定しています。ここ

$episode = Episode::with('content',function($query) use($id){ 
       $query->where('episode_id',$id); 
      })->where('id',$id); 

動作すると思い、これを試してみてください。それが動作しない場合は教えてください。

関連する問題