Insert multiple - Laravel

0

I come to you in search of an orientation, I am working with laravel 5.5, I am using some nested lists, like the ones in the following photo:

In the first field I choose the server and in the second, it loads me a few instances from an ajax.

I've been trying to find information on how to perform a multiple insert, which allows me to select one or more instances, but I definitely could not.

If someone asked me to help, I would appreciate it.

Deputy model.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Indisponibilidades extends Model
{
    protected $fillable = ['servidor','descripcion','hora_inicio','hora_final','instancia','nivel'];

    /*
    |------------------------------------------------------------------------------------
    | Relations
    |------------------------------------------------------------------------------------
    */
     public function parentIndisponibilidades()
    {
        return $this->belongsTo(Indisponibilidades::class);
    }

    public function server()
    {
        return $this->belongsTo('App\Servidores','servidor');
    }

    public function instanciasF()
    {
        return $this->belongsTo('App\Instancias','instancia');
    }

    public function ixs()
    {
        return $this->belongsTo('App\Ixs','instancia');
    }



}

Controller:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Http\JsonResponse;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Indisponibilidades;
use App\SistemasOperativos;
use App\Servidores;
use App\Ixs;
use App\Instancias;



class IndisponibilidadController extends Controller
{    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {

        $items = Indisponibilidades::with('parentIndisponibilidades','server','instanciasF','ixs')->get();

        return view('admin.indisponibilidadVistas.index', compact('items'));
    }


    public function consultarInstancias(Request $request) 
    { 
        $servidores = $request->id; 
        $ixs = Ixs::where('id_servidor', $servidores)->get(); 

        $respuesta2 = array(); 
        $respuesta2['ixs'] = $ixs->toArray(); 
        return response()->json($respuesta2); 

    }



    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $servidores = Servidores::orderBy('ip','asc')->get(); 
          return view ('admin.indisponibilidadVistas.create', compact('servidores')); 
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        Indisponibilidades::create($request->all());

        //return back()->withSuccess(trans('app.success_store'));
        return redirect()->route(ADMIN.'.indisponibilidadRoute.index')->withSuccess(trans('app.success_store'));
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $item = Indisponibilidades::findOrFail($id);
        return view('admin.indisponibilidadVistas.edit', compact('item'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {

        $item = Indisponibilidades::findOrFail($id);
        $item->update($request->all());
        //return back()->withSuccess(trans('app.success_update'));
        return redirect()->route(ADMIN.'.indisponibilidadRoute.index')->withSuccess(trans('app.success_update'));
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        Indisponibilidades::destroy($id);

        return back()->withSuccess(trans('app.success_destroy'));
    }
}

View:

<?php $title = isset($item) ? $item->name: "Agregar Indisponibilidad"?>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

{!! Form::mySelect('nivel', 'Nivel de Indisponibilidad: ', config('variables.nivel'),['required','id' => 'ListaNivel', 'class'=>'chosen', 'placeholder' => 'Escoge una opción']) !!}

{!! Form::mySelect('servidor', 'Servidor: ', App\Servidores::pluck('ip', 'id')->toArray(), null, ['id' => 'server', 'class'=>'chosen', 'placeholder' => 'Escoge una opción']) !!}

<div class="row">  <div class="col-sm-12">
    <div class="box" style="border:1px solid #d2d6de;">
      <div class="box-body" style="margin:10px;">
            <div class="requerido-con-instancia">
          <label class="col-sm-5" for="nombre">Instancia</label>
          <br>
            <select name="instancia" id="instancia" class="requerido-con-instancia" style="width: 100%" multiple="multiple">
               <option value="">Selecciona un servidor primero</option>
            </select>
          <br>
          </div>
      </div>
    </div>
  </div>
</div>

<script> 
        var rutaConsultaInstancia = "{{ route('admin.ruta.consulta.instancia') }}"; 
        $(document).ready(function(){ 
        selectChange(); 
        }); 

        function selectChange(){ 
        $('#server').on('change', function(e){ 
        var insta = $(this).val(); 
        ajaxSelect(insta); 
        }); 
        } 

        function ajaxSelect(id)
        { 
            $.ajax({ 
            type: 'POST', 
            headers: { 
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
            },   
            url: rutaConsultaInstancia, 
            data: {id: id}, 
            dataType: 'json', 
            beforeSend: function(){ 
            } 
            }).done(function(response) { 
            var html = '<option value="">Selecciona una opción</option>'; 
            $.each(response.ixs, function(i, elem){ 
            html += '<option value="'+ elem.id +'">'+ elem.nombre +'</option>' 
            }); 
            $('#instancia').html(html); 
            }).fail(function(data) { 

            }); 
        }
    </script>

{!! Form::myInput('datetime-local', 'hora_inicio', 'Hora inicio: ', ['required']) !!}

{!! Form::myInput('datetime-local', 'hora_final', 'Hora final: ' , ['required']) !!}

{!! Form::myInput('text', 'descripcion', 'Descripción: ', ['required']) !!}




 <script>
     $(function() 
      {
      $("#ListaNivel").change(function()
        {
          if($("option:selected", this).text() == 'Instancia')
          {
              $(".requerido-con-instancia").show();
            }
            else
            {
              $(".requerido-con-instancia").hide();         
            }
        });
      });
  </script>
    
asked by Omar Noa 08.11.2018 в 20:26
source

1 answer

1

To load the select you must use append:

function ajaxSelect(id)
        { 
            $.ajax({ 
            type: 'POST', 
            headers: { 
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
            },   
            url: rutaConsultaInstancia, 
            data: {id: id}, 
            dataType: 'json', 
            beforeSend: function(){ 
            } 
            }).done(function(response) { 
            var html = '<option value="">Selecciona una opción</option>'; 
            $.each(response.ixs, function(i, elem){ 
            html += '<option value="'+ elem.id +'">'+ elem.nombre +'</option>' 
            }); 
            $('#instancia').append(html); 
            }).fail(function(data) { 

            }); 
        }

If it is for multiple insert you should use the following:

<div class="row">  <div class="col-sm-12">
    <div class="box" style="border:1px solid #d2d6de;">
      <div class="box-body" style="margin:10px;">
            <div class="requerido-con-instancia">
          <label class="col-sm-5" for="nombre">Instancia</label>
          <br>
            <select name="instancia[]" id="instancia" class="requerido-con-instancia" style="width: 100%" multiple="multiple">
               <option value="">Selecciona un servidor primero</option>
            </select>
          <br>
          </div>
      </div>
    </div>
  </div>
</div>

See how the name of the select carries a [] that is so that it brings several data to the server.

    
answered by 08.11.2018 / 20:43
source