2016-09-04 17 views
2

関連するテーブルにデータを挿入する方法は?Laravel 5は関連するテーブルにデータを挿入しますか?

版テーブル:

public function up() 
    { 
     Schema::create('edition', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('title')->unique(); 
      $table->text('cover')->nullable(); 
      $table->timestamps(); 
     }); 

     //Set FK di kolom id_edition di table Journal 
     Schema::table('journal', function(Blueprint $table) { 
      $table->foreign('id_edition')->references('id')->on('edition')->onDelete('cascade')->onUpdate('cascade'); 
     }); 
    } 

ジャーナルテーブル:

public function up() 
    { 
     Schema::create('journal', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('title', 200); 
      $table->string('author'); 
      $table->text('abstract'); 
      $table->text('file'); 
      $table->integer('id_edition')->unsigned(); 
      $table->timestamps(); 
     }); 
    } 

版モデル:

class Edition extends Model 
{ 
    protected $table = 'edition'; 

    protected $fillable = [ 
     'title', 
     'cover', 
    ]; 

    public function journal() 
    { 
     return $this->hasMany('App\Journal', 'id_edition'); 
    } 
} 
私は1対多の関係を持つ2つの関連するテーブルを持って、以下の構造であり、

ジャーナルモデル:

class Journal extends Model 
{ 
    protected $table = 'journal'; 

    protected $fillable = [ 
     'title', 
     'author', 
     'abstract', 
     'file', 
    ]; 

    public function edition() 
    { 
     return $this->belongsTo('App\Edition', 'id_edition'); 
    } 
} 

多くの写真を含むアルバムのように、多数のジャーナルがあるはずのエディションテーブルです。では、作成方法と保存方法はどのように見えますか?私がしようとしなかったと私は「制約が失敗した」このエラーを取得し、以下のコードです:

コントローラー:

<div class="tombol-nav"> 
<a href="../journal/create?edition={{$edition->id}}" class="btn btn-primary">Add new Journal to this edition</a> 
</div> 
+0

'store'メソッドで' edition_id'をどのように取得していますか? – jaysingkar

+0

どう考えても、上記のメソッドストアは機能しませんでした –

答えて

3

:で作成するフォームを開くことになっ

public function create() { 
     return view('journal/create'); 
    } 

    public function store(JournalRequest $request, Edition $edition) { 
     $input = $request->all(); 

     //Input PDF 
     if ($request->hasFile('file')) { 
      $input['file'] = $this->uploadPDF($request); 
     } 

     //Insert data journal 
     $journal = Journal::create($input); 

     return redirect('journal'); 
    } 

ボタンのコード入力変数にedition_idが入力されていると仮定すると、editionに属するjournalを追加する方法は次のとおりです。

$edition_id = $request->get('edition'); //replace this with your way of retrieving edition_id 
$journal = Edition::findOrFail($edition_id)->journal()->create($input); 
関連する問題