Ver Mensaje Individual
  #3 (permalink)  
Antiguo 26/07/2018, 10:21
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Laravel error if en relationship

El error es porque estas usando asignación dentro del if y no es necesario
Código PHP:
Ver original
  1. public function detalle_evento($inventario_id, $vendedor = false){
  2.     $inventario = Inventario::where('id', $inventario_id);
  3.     if($vendedor){
  4.         $inventario->with(['Ventas' => function($query) use($vendedor){
  5.             $query->where('vendedor', $vendedor);
  6.         }]);
  7.     }else{
  8.         $inventario->with('Ventas');
  9.     }
  10.     return $inventario->first();
  11. }
La razón de no usar la asignación es porque el resultado de la primera senctencia es un objeto Builder y hasta que no hagas un first, get o find puedes seguir armando el query

Tambien puedes usar when para sustituir el if. Por otro lado supongo que la segunda función esta como método del controller si es así separa todo en una nueva clase.
También hecha un vistazo al tema de pruebas en Laravel; te hacen la vida mucho mas sencilla
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.