2017-10-11 16 views
0

1対多の関係を使用してデータベースにデータを保存するための助けが必要です。あなたが私にそれを行う方法のいくつかの例を示すことができれば素晴らしいだろう。私bear_idが0であるので、私は、データを取得するように見えることはできませんので(例:bear_id = 1 1のfish_idとを取得することができます2)ここで laravelを使用して1対多の関係をデータベースに保存する

は私のコードです:blade.phpため

私のテーブルの
{{Form::text('name_of_bear, '', ['class' => 'form-control'])}} --> first page, once user has entered bear name it will redirect it to the fish page to enter the checkbox 


<input type="checkbox" id="inlineCheckbox1" name="type_of_fish[]" value="Salmon"> Salmon <input type="checkbox" id="inlineCheckbox1" name="type_of_fish[]" value="Sardine"> Sardine --> second page after user has entered the data for bear they will click next and be redirected to here 

Schema::create('bears, function (Blueprint $table) { 
      $table->increments('id'); 
      $table->engine = 'InnoDB'; 
      $table->string(name); 
      $table->timestamps(); 
}); 

Schema::create(fishs, function (Blueprint $table) { 
      $table->increments('id'); 
      $table->engine = 'InnoDB'; 
      $table->string(name); 
      $table->integer(bear_id); 
      $table->timestamps(); 
}); 

魚モデル:

class fish extends Eloquent 
{ 
     protected $fillable = array('name', 'bear_id'); 

    // DEFINE RELATIONSHIPS 
    public function bears() { 
     return $this->belongsTo('App\bear); 
    } 
} 

クマモデル:コントローラの部分については

class bear extends Eloquent 
{ 
    protected $primaryKey = 'id'; 
    public function fishs() { 
     return $this->hasMany('App\fish,'bear_id'); 
    } 
} 

は、私はまだ私が実際に使用する方法がわからないので、勉強、それ

コントローラー:

public function view(Request $request) 
{ 
     $fish= new fish(); 

     $fishType= $request->input('type_of_fish'); 
     $fish->type_of_fish= json_encode($fishType); 

     $fish->save(); 

$bear= new bear(); 
     $bear->Name = $request->input('name_of_bear'); 
$bear->save(); 
$fish->bear_id = $bear->id;  
$fish->save(); 

答えて

1

ではなく、手動で設定します魚のモデルのbear_id、Eloquentはあなたにassociateモデルを提供します。私は新しいモデルをインスタンス化する代わりにスタティックなcreate()メソッドを使い、プロパティを別々に埋めています。

$fish = fish::create(['type_of_fish' => json_encode($fishType)]); 
$bear = bear::create(['Name' => $request->input('name_of_bear'); 

$fish->bears()->associate($bear); 
$fish->save(); 

ただし、この時点で既存のリソースを扱っていないので、あなたは関係を雄弁のcreateメソッドを使用することができます。

$bear = Bear::create(['Name' => $request->input('name_of_bear')]); 
$bear->fishes()->create(['type_of_fish' => $fishType); 

これにより、新しい魚が作成され、それを上の行で作成されたクマと自動的に関連付けます。

+0

別のコントローラーで作成機能を分離し、代わりに関連付けることはできますか?私はユーザー入力を取る2ページのフォームを作成しているので、コントローラ内で何をすべきかわからない – blastme

関連する問題