简体   繁体   中英

Laravel insert or update array, multiple rows

Hello guys im stuck multiple row insert or update update working fine but how to make inside of update insert new row

Iwant just in edit.blade.php -> if row exists update or just create new one

Hello guys im stuck multiple row insert or update update working fine but how to make inside of update insert new row

Iwant just in edit.blade.php -> if row exists update or just create new one

new row insert image

Controller

  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

As far as I understand your question, you would like to create a new episode in case there is no ID given. Here, I've edited your code a little:

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

Let me know if it works. Good day and best of luck with your app.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM