Como insertar varios registros en una misma tabla con el mismo name o id

publicado por: Anonymous

Buen día compañeros tengo una duda de como insertar esto en una BD, hasta donde tengo entendido es con un array,

Este es mi formulario

_x000D_

_x000D_

<div class="panel-body">_x000D_
  <form class="form-inline" method="POST" action="{{URL::action('[email protected]')}}">_x000D_
_x000D_
    {{ csrf_field()}}_x000D_
    <input type="text" id="id" name="id" value="{{ $id }}">_x000D_
    <input type="text" name="pA" value="A" hidden>_x000D_
    <div class="form-row">_x000D_
      <table class="table table-striped">_x000D_
        <p><b>A. Cuando se presenta un conflicto entre personas acerca de ideas. Tiendo a estar a favor de la parte que</b></p>_x000D_
_x000D_
        <thead>_x000D_
          <th></th>_x000D_
          <th></th>_x000D_
          <th></th>_x000D_
_x000D_
        </thead>_x000D_
        <tbody>_x000D_
          <tr>_x000D_
            <th scope="row">1</th>_x000D_
            <td>Identifica e intenta sacar a la luz el conflicto</td>_x000D_
            <td><input class="form-control" type="number" name="a[1a]" id="1a" required pattern="[0-9]" min="1" max="5"></td>_x000D_
          </tr>_x000D_
          <tr>_x000D_
            <th scope="row">2</th>_x000D_
            <td>Expresa de la mejor manera los valores e ideales involucrados</td>_x000D_
            <td><input type="number" class="form-control" name="a[1b]" required pattern="[0-9]" min="1" max="5"></td>_x000D_
          </tr>_x000D_
          <tr>_x000D_
            <th scope="row">3</th>_x000D_
            <td>Refleja de la mejor manera mi opinión y experiencia personal</td>_x000D_
            <td><input type="number" class="form-control" name="a[1c]" required pattern="[0-9]" min="1" max="5"></td>_x000D_
          </tr>_x000D_
          <tr>_x000D_
            <th scope="row">4</th>_x000D_
            <td>Se aproxima a la situación con la mayor lógica y consistencia</td>_x000D_
            <td><input type="number" class="form-control" name="a[1d]" required pattern="^[0-9]+" min="1" max="5"></td>_x000D_
          </tr>_x000D_
          <tr>_x000D_
            <th scope="row">5</th>_x000D_
            <td>Mejor expresa el argumento de forma más concisa y contundente.</td>_x000D_
            <td><input type="number" class="form-control" name="a[1e]" required pattern="^[0-9]+" min="1" max="5"></td>_x000D_
          </tr>_x000D_
        </tbody>_x000D_
_x000D_
      </table>_x000D_
    </div>_x000D_
    <center><button class="btn btn-primary">Acceder</button></center>_x000D_
  </form>

_x000D_

_x000D_

_x000D_

En mi controlador tengo esta parte pero me da el error de

A non well formed numeric value encountered

Pero me lo reconoce como array esa parte donde me da error de esta manera

array:5a  [â–¼
  "1a" => "1"
  "1b" => "2"
  "1c" => "3"
  "1d" => "4"
  "1e" => "5"
]

y Este es el codigo que uso para insertar los valores desde mi controlador

public function saveenc(Request $request)
    {


      foreach($request->all() as $req){
        $encuesta = new Encuesta;
        $encuesta->id_usu = $request->get('id');
        $encuesta->pregunta = $request->get('pA');
        $encuesta->respuesta = $req['1a'];
        $encuesta->respuesta = $req['1b'];
        $encuesta->respuesta = $req['1c'];
        $encuesta->respuesta = $req['1d'];
        $encuesta->respuesta = $req['1e'];
        $encuesta->save();
        }
        return "exito";
    }

Y necesito que quede de esta manera en la BD

-----------------------------------------
|id_enc | Pregunta | respuesta | id_usu |
-----------------------------------------
|  1    |    A     |1,4,3,2,5  |    1   |
-----------------------------------------

ya sea de esa manera o que cree un field para cada respuesta.

Estoy usando Laravel 5.0 PHP 7.0, bootstrap 3.9

Siguiendo la sugerencia de Andy Samuel, intente con

 $encuesta->respuesta = implode(',', $request->a);
 $encuesta->respuesta = implode(',', $request->a);

Y ahora me da un error de SQL

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (solvexintel.encuesta, CONSTRAINT encuesta_id_usu_foreign FOREIGN KEY (id_usu) REFERENCES usuario (id_usu) ON DELETE CASCADE) (SQL: insert into encuesta (id_usu, pregunta, respuesta, updated_at, created_at) values (60, A, 1,2,3,4,5, 2018-08-28 18:00:46, 2018-08-28 18:00:46))

solución

Respondiendo a mi propia pregunta, el codigo me quedo de esta manera

        $encuesta = new Encuesta;
        $encuesta->id_usu = $request->get('id');
        $encuesta->pregunta = implode(',', $request->pa);
        $encuesta->respuesta = implode(',', $request->a);
        $encuesta->save();

De esta manera me guardo en la BD como solicite quedando asi:

introducir la descripción de la imagen aquí

Gracias a andy por el tip

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *