El dia de hoy me he topado con un error algo curioso que no he savido solventar directamente con eloquent.,
Verán tengo la siguiente función para obtener los detalles de un inventario y sus ventas filtrado o no por vendedor
Relacion en inventario:
Código PHP:
Ver originalpublic function Ventas(){
return $this->hasMany('App\Ventas', 'inventario_id');
}
Funcion en controlador
Código PHP:
Ver originalpublic function detalle_evento($inventario_id, $vendedor = false){
$inventario = Inventario::where('id', $inventario_id);
if($vendedor){
$inventario = $inventario->with(['Ventas' => function($query) use($vendedor){
$query->where('vendedor', $vendedor);
}]);
}else{
$inventario = $inventario->with('Ventas');
}
return $inventario->first();
}
Hasta aqui todo Ok, mando llamar la funcion dentro de otra funcion que genera la vista y hago un return en ese momento para verificar los datos, me las ventas filtradas por ID de vendedor en json dado que no he imprimido la vista.... Magnifico
Código PHP:
Ver originalreturn $evento = $this->detalle_evento($inventario_id, $request->vendedor);
Pero requiero hacer un par de operaciones extra
Código PHP:
Ver originalforeach ($evento->ventas as $venta) {
//.... aqui mis operaciones
}
return $evento;
Aquí es donde me quedo de 6.... me retorna todas las ventas sin filtrar, a lo que me pregunto como diablos es que tengo todas las ventas alli si anteriormente ya habian sido filtradas...
¿como lo soluciono?
he intentado crear un array independiente utilizando el mismo foreach conque hago las operaciones extra, pero obvio no funciona, al hacer el foreach ya tiene todo sin filtrar.
Inclusive a modo de prueba hice esto, todo bien, filtrado como debe.
Código PHP:
Ver originalpublic function test(){
return $evento = $this->detalle_evento(1, 4);
}
Luego esto, ERROR, datos sin filtrar.
Código PHP:
Ver originalpublic function test(){
$evento = $this->detalle_evento(1, 4);
return $evento->ventas;
}
En el momento que doy entre a la siguiente linea ya me muestra todo sin filtrar