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:
Funcion en controladorVer original
public function Ventas(){ return $this->hasMany('App\Ventas', 'inventario_id'); }
Código PHP:
Ver original
public 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 original
return $evento = $this->detalle_evento($inventario_id, $request->vendedor);
Pero requiero hacer un par de operaciones extra
Código PHP:
Ver original
foreach ($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 original
public function test(){ return $evento = $this->detalle_evento(1, 4); }
Luego esto, ERROR, datos sin filtrar.
Código PHP:
Ver original
public 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