Laravel вставить или обновить массив, несколько строк - PullRequest
0 голосов
/ 30 июня 2018

Здравствуйте, ребята, я застрял в нескольких строках или обновление обновления работает нормально, но как сделать, чтобы внутри обновления вставить новую строку

Хочу просто в edit.blade.php -> если строка существует, обновите или просто создайте новую

Здравствуйте, ребята, я застрял в нескольких строках или обновление обновления работает нормально, но как сделать внутри обновления вставить новую строку

Хочу просто в edit.blade.php -> если строка существует, обновите или просто создайте новую

вставка новой строки изображения

Контроллер

  public function update(Request $request, $id)
{
      $post = Anime::find($id);

      $post->anime_name = $request->input('anime_name');
      $post->anime_namesecond = $request->input('anime_namesecond');
      $post->anime_synopsis = $request->input('anime_synopsis');
      $post->anime_studio = $request->input('anime_studio');
      $post->anime_duration = $request->input('anime_duration');
      $post->age_rating = $request->input('age_rating');
      $post->aired_at = $request->input('aired_at');
      $post->anime_promovideo = $request->input('anime_promovideo');
      $post->anime_patchdownload = $request->input('anime_patchdownload');
      $post->author_id = $userId = Auth::id();
      $post->anime_episodelist = $request->input('anime_episodelist');
      $post->translator = $request->input('translator');

      if ($post->save()) {


        if (Episode::where('id', '=', Input::get('id'))->exists()) {
          foreach (request()->input('id') as $key => $id) {
            $episode = \App\Episode::find($id);



            $episode->episode_name = $request->input('episode_name')[$key];
            $episode->episode_image = $request->input('episode_image')[$key];
            $episode->episode_downloadlink = $request->input('episode_downloadlink')[$key];
            $episode->episode_watchlink = $request->input('episode_watchlink')[$key];

            $episode->save();
        }
      }
      else {
        echo "T_T";
      }

    }

      //return redirect()->route('anime.show', $post->id);

}

Edit.blade.php

<tr v-for="row in rows">
    <input type="hidden" v-model="row.id" name="id[]" />
    <td><b-input icon="format-color-text" type="text" v-model="row.episode_name" name="episode_name[]" required></b-input></td>
    <td><b-input icon="link" type="text" v-model="row.episode_downloadlink" name="episode_downloadlink[]" required></b-input></td>
    <td><b-input icon="link" type="text" v-model="row.episode_watchlink" name="episode_watchlink[]" required></b-input></td>
    <td><b-input icon="camera" type="text" v-model="row.episode_image" name="episode_image[]" required></b-input></td>

    <td><i class="fa fa-minus-circle button is-danger" @click="removeRow()"></i></td>
  </tr>

Vue js script

<script>
  var app = new Vue({
    el: '#app',
    data: {
      anime_name: '{{ $post->anime_name }}',
      anime_namesecond: '{{ $post->anime_namesecond }}',
      anime_synopsis: '{{ $post->anime_synopsis }}',
      anime_episodelist: '{{ $post->anime_episodelist }}',
      anime_studio: '{{ $post->anime_studio }}',
      anime_namesecond: '{{ $post->anime_namesecond }}',
      anime_duration: '{{ $post->anime_duration }}',
      age_rating: '{{ $post->age_rating }}',
      aired_at: '{{ $post->aired_at }}',
      anime_promovideo: '{{ $post->anime_promovideo }}',
      anime_patchdownload: '{{ $post->anime_patchdownload }}',
      translator: '{{ $post->translator }}',
      rows: JSON.parse('{!! json_encode($eps) !!}'),
      api_token: '{{Auth::user()->api_token}}'
    },
    methods: {
      updateSlug: function(val) {
        this.slug = val;
      },
      addRow: function (index) {
            try {
                this.rows.splice(index +1, 0, {});
            } catch(e)
            {
                console.log(e);
            }
        },
        removeRow: function (index) {
            this.rows.splice(index, 1);
        }
    }
  });
</script>
@endsection

1 Ответ

0 голосов
/ 01 июля 2018

Насколько я понимаю, ваш вопрос, вы хотели бы создать новый эпизод, если не указан идентификатор. Здесь я немного отредактировал ваш код:

  if ($post->save()) {
      foreach (request()->input('id') as $key => $id) {
        $episode = \App\Episode::find($id);

        if($episode === null) { 
          $episode = new \App\Episode;
        }

        $episode->episode_name = $request->input('episode_name')[$key];
        $episode->episode_image = $request->input('episode_image')[$key];
        $episode->episode_downloadlink = $request->input('episode_downloadlink')[$key];
        $episode->episode_watchlink = $request->input('episode_watchlink')[$key];

        $episode->save();
   }
}

Дайте мне знать, если это работает. Хорошего дня и удачи в вашем приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...