tiempo real rango query por instantanea implementar filtros filtro con busqueda buscador php laravel laravel-5 laravel-5.1 laravel-5.2

php - real - query scopes laravel



Quitar la clave cuando las colecciones de filtro laravel (4)

Intenta agregar values()

$result = $result->filter(function ($item) { return $item->id > 5; })->values()->all();

Me encontré con un problema al usar el filtro con Laravel 5.2, después de filtrar, obtuve una clave inesperada como "0", "1", "2" ..., ¿cómo puedo eliminarla?

Antes del filtro:

[ { "id": 1, "user_id": 11, "location": "1", "content": "1", "interest_id": 1, "longitude": 1, "latitude": 1, "place_id": "1", "created_at": "2016-06-09 15:44:18", "updated_at": "2016-06-02 14:28:42", "deleted_at": null }, { "id": 2, "user_id": 12, "location": "Forest Lake QLD, Australia", "content": "I''m newbie. Hello everybody", "interest_id": 1, "longitude": 152.9692508, "latitude": -27.6236519, "place_id": "ChIJB_NHl8hOkWsRMIne81qjAgU", "created_at": "2016-06-09 14:28:42", "updated_at": "2016-06-09 14:28:42", "deleted_at": null }, { "id": 8, "user_id": 11, "location": "Hendra QLD, Australia", "content": "What time is it?", "interest_id": 1, "longitude": 153.0635202, "latitude": -27.4225981, "place_id": "ChIJAXNg5PBYkWsRIIve81qjAgU", "created_at": "2016-06-09 14:28:42", "updated_at": "2016-06-09 14:28:42", "deleted_at": null }, { "id": 9, "user_id": 11, "location": "Hendra QLD, Australia", "content": "Nice Cream!!!!????????", "interest_id": 2, "longitude": 153.0635202, "latitude": -27.4225981, "place_id": "ChIJAXNg5PBYkWsRIIve81qjAgU", "created_at": "2016-06-09 14:28:42", "updated_at": "2016-06-09 14:28:42", "deleted_at": null }, { "id": 4, "user_id": 17, "location": "Forest Lake QLD, Úc", "content": "Have a nice day!", "interest_id": 1, "longitude": 152.9692508, "latitude": -27.6236519, "place_id": "ChIJB_NHl8hOkWsRMIne81qjAgU", "created_at": "2016-06-09 14:28:42", "updated_at": "2016-06-09 14:28:42", "deleted_at": null }, { "id": 7, "user_id": 18, "location": "Hendra QLD, Australia", "content": "Where is Kiet Bui? ❤️❤️❤️❤️❤️", "interest_id": 1, "longitude": 153.0635202, "latitude": -27.4225981, "place_id": "ChIJAXNg5PBYkWsRIIve81qjAgU", "created_at": "2016-06-09 14:28:42", "updated_at": "2016-06-09 14:28:42", "deleted_at": null } ]

Después del filtro, id> 5 por ejemplo:

{ "2": { "id": 8, "user_id": 11, "location": "Hendra QLD, Australia", "content": "What time is it?", "interest_id": 1, "longitude": 153.0635202, "latitude": -27.4225981, "place_id": "ChIJAXNg5PBYkWsRIIve81qjAgU", "created_at": "2016-06-09 14:28:42", "updated_at": "2016-06-09 14:28:42", "deleted_at": null }, "3": { "id": 9, "user_id": 11, "location": "Hendra QLD, Australia", "content": "Nice Cream!!!!????????", "interest_id": 2, "longitude": 153.0635202, "latitude": -27.4225981, "place_id": "ChIJAXNg5PBYkWsRIIve81qjAgU", "created_at": "2016-06-09 14:28:42", "updated_at": "2016-06-09 14:28:42", "deleted_at": null }, "5": { "id": 7, "user_id": 18, "location": "Hendra QLD, Australia", "content": "Where is Kiet Bui? ❤️❤️❤️❤️❤️", "interest_id": 1, "longitude": 153.0635202, "latitude": -27.4225981, "place_id": "ChIJAXNg5PBYkWsRIIve81qjAgU", "created_at": "2016-06-09 14:28:42", "updated_at": "2016-06-09 14:28:42", "deleted_at": null } }

¿Cómo puedo eliminar la clave 2, 3 y 5 en el resultado y solo obtener una matriz como antes de filtrar? Cualquier ayuda es de agradecer. Editar: Mi código:

$result = $result->filter(function ($item) { return $item->id > 5; })->all();


No puedes hacer eso si quieres usar el ayudante de filter() , porque así es como funciona este ayudante. Quiero decir que no hay parámetros o algo para este método. Solo puedes reconstruir la colección devuelta.

O bien, puede usar el código del método filter() para crear su propio ayudante, como myFilter() y modificarlo un poco, por ejemplo:

public function myFilter(callable $callback) { $return = []; foreach ($this->items as $key => $value) { if ($callback($value, $key)) { // $return[$key] = $value; // original line from filter() method $return[] = $value; // Here you want to remove $key } } return new static($return); }

O simplemente podrías usar la colección con índices. Me refiero a que usualmente usas la colección para iterar sobre ella y estos índices no te molestarán.


Tuve el mismo problema al ordenar: el ejemplo es ordenar los resultados de los juegos por puntos y objetivos. La ordenación agregada clave attr en el resultado. Así que uso en el final -> valores () -> todos () para obtener una matriz de valores sin claves.

P.ej:

$sorted = $resultados->sortByDesc(''pts'')->sortByDesc(''gf'')->values()->all();

En tu caso:

$filteredValues = $filtered->values()->all();

Espero que te ayude.


$result = $result->filter(function ($item) { return $item->id < 5; })->all();

Disfrutar !!

$collection = collect([1, 2, 3, 4]); $filtered = $collection->filter(function ($item) { return $item < 2; }); $filtered->all(); return $filtered;

resultado: [1]

Pero:

$collection = collect([1, 2, 3, 4]); $filtered = $collection->filter(function ($item) { return $item > 2; }); $filtered->all(); return $filtered;

Resultado: {"2": 3, "3": 4}

no se como, porque