2016-09-04 9 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'); 
    } 
} 

Модель журнала:

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

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

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

В таблице изданий должно быть много журналов, таких как альбом, в котором много фотографий. Итак, как будет выглядеть метод создания и сохранения? Я пытаюсь и я получаю эту ошибку «не выполняется», ниже приведены коды:

Контроллер:

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'); 
    } 

кнопка код, который должен открыть создать форму в:

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

Как вы получаете 'edition_id' в методе' store'? – jaysingkar

+0

не знаю, как, метод хранения выше не работал –

ответ

3

Предполагая, что edition_id находится во входной переменной, вот как вы можете добавить journal, относящийся к конкретным edition:

$edition_id = $request->get('edition'); //replace this with your way of retrieving edition_id 
$journal = Edition::findOrFail($edition_id)->journal()->create($input); 
Смежные вопросы