Acabo de empezar a aprender laravel. Hubo un problema, hice una selección de la base de datos de 5000 registros con paginación.

Mis datos se ven así 380673113513 380673113514 380673113515 380673113516 ... y algunos miles más

Las rompo en una matriz

$numberList = explode("\r\n", $request['inputList']);

Y hago una selección con paginación

$objects = Number::has('object')->with('object')->whereIn('number', $numberList)->Paginate(1000);

Para trabajar la paginación, retransmito los datos de mi formulario

{{ $objects->appends(['inputList' => $_REQUEST['inputList']])->links() }}

Como resultado tengo tales enlaces http://telbase.dev/list?inputList=380673113513%0D%0A380673113514%0D%0A380673113515%0D%0A380673113516%0D%0A380673113517%0D% 0A380673113518% 0D% 0A380673113519% 0D% 0A380673113520% 0D% 0A380673113521% 0D% 0A380673113522% 0D% 0A380673113523% 0D% 0A380673113524% 0D% 0A380673113525% 0D% 0A380673113526% 0D% 0A380673113527% 0D% 0A380673113528% 0D% 0A380673113529% 0D% 0A380673113530% 0D% 0 ................. & page = 2

Si hay muchos datos, la cadena es muy larga y el servidor devuelve un error 414 Solicitar URI demasiado grande. Creo que inicialmente hice algo mal. Cómo pasar correctamente una solicitud tan grande en la paginación.

PD Perdón por mi inglés, estoy usando el traductor de Google)

0
Aleksey 14 jun. 2017 a las 09:44

3 respuestas

La mejor respuesta

Web.php:

Route::post('/'data, '<controllername>@<functionname>');

Controlador:

public function <functionname>(){
    //logic to create data
    $data = response()->json([
        'data' => $data
    ])
    return View::make('<view_name>', array('data' => $data));
}

Entonces deberías poder acceder a ella en tu vista:

{{$data[0]-><attribute>}}

O hacer una declaración foreach ...

0
Alex Mac 14 jun. 2017 a las 07:15

¿Estás utilizando el método POST? Si no es así, porque la duración de una solicitud de obtención es limitada cuando se publica en la configuración del servidor.

0
Alex Mac 14 jun. 2017 a las 06:48

Web.php

    Route::get('/test', [
    'uses' => 'TestController@test',
    'as'=> 'test'
]);

Route::post('/test', [
    'uses' => 'TestController@test',
    'as'=> 'test'
]);

Controlador

public function test(Request $request)
{
        $numberList = explode("\r\n", $request['inputList']);
        $objects = Number::has('object')->with('object')->whereIn('number', $numberList)->Paginate(10);
        return view('objects.test')->with('objects', $objects);
}

Vista

<form class="form-horizontal" action="{{ route('test') }}" method="POST">
   <textarea class="form-control" name="inputList" id="inputList"></textarea>
   <button type="submit" class="btn btn-default">go</button>
   <input type="text" name="_token" value="{{ csrf_token() }}" hidden>
</form>

        @if ($objects->count() > 0)
            @foreach( $objects as $object)
                <tr>
                    <td>{{ $object->number }}</td>
                    <td>{{ $object->object->fio }}</td>
                </tr>
            @endforeach
            {{ $objects->links() }}
        @endif

Cuando hago una solicitud en el formulario, el resultado se muestra normalmente. Pero cuando intento ir a la página 2, aparece una página vacía con el formulario. Todo porque cuando va a la página 2 $ request ['inputList'] ya está vacío y, como resultado, $ objects también está vacío. ¿Porqué es eso?

0
Aleksey 14 jun. 2017 a las 10:45