Stack Overflow en español Asked by Mau España on November 10, 2021
Estoy intentando realizar un query con lo que me permite Query Builder de laravel, pero no se por que al momento de hacer la siguiente consulta me da un error que no esta definido el id y es la variable que estoy recibiendo en la funcion show.
public function show($id)
{
$fac = DB::table('fac_enc as fe')
->join('fac_det as fd', function ($join) {
$join->on('fe.id_fac_enc', '=', 'fd.id_fac_enc')
->where('fe.id_fac_enc','=',$id);
})
->get();
return view('facturas.show',compact('fac'));
}
Si alguien supiera el por que pasa esto, se lo agradecere
Ya me funcionó de hecho no se por que algunas veces las cosas no funcionan aunque estén de forma correcta, el código quedó así:
$facturas = DB::table('fac_enc as fe')
->join('fac_det as fd','fe.id_fac_enc','=','fd.id_fac_enc')
->join('producto as p','fd.id_producto','=','p.id_producto')
->join('marca as m','p.id_marca','=','m.id_marca')
->join('categoria as c','p.id_categoria','=','c.id_categoria')
->join('cliente as cli','cli.id_cliente','=','fe.id_cliente')
->where('fe.id_fac_enc','=',$id)
->select('fe.id_fac_enc as id_fac_enc','p.descripcion as producto','m.descripcion as marca','c.descripcion as categoria','precio_venta','cantidad','total','nit','nombre','direccion')
->get();
return $facturas;
return view('facturas.show',compact('facturas'));
lo que no entiendo es por qué me aparece este error:
si en el resultado en json si aparece ese campo y muestra datos.
Answered by Mau España on November 10, 2021
Me parece un tanto complejo y re buscado como haces el join
, pero el asunto parece arreglarse si le pasas la varibale $id
del modo siguiente:
Tu tienes esta línea de código:
->join('fac_det as fd', function ($join) {
Aquí debes usar use()
para indicarle que use dentro del contexto de la función anónima una variable que esta por fuera de esta, en este caso $id
, del modo siguiente:
->join('fac_det as fd', function ($join) use ($id){
Sin embargo al margen de tu pregunta, te recomendaría leer sobre las relaciones en Laravel que te permitirán manejar escenarios como el que tratas de resolver con esta consulta con mayor facilidad.
Ejemplo:
El siguiente código me da como error:
Undefined variable
$nombre
Pues $nombre
no existe dentro del contexto de la función anónima.
$nombre = "Yo";
$mensaje = function(){
echo $nombre;
};
$mensaje();
Sin embargo ahora haciendo uso de use($variable)
indicaremos que use una variable externa dentro dle contexto de la función anónima, imprimiendo dicho valor:
$nombre = "Yo";
$mensaje = function() use($nombre){
echo $nombre;
};
$mensaje();
Dando como resultado:
Yo
ACTUALIZACIÓN
Desde PHP 7.4 tenemos a nuestra disposición el uso de las funciones flecha, notemos que el scope entre la función anónimas y las funciones flecha difiere
EJEMPLO
$resultado = 10;
//CON FUNCIONES ANÓNIMAS
$operacion2 = function () use($resultado){
return $resultado * 10;
};
echo $operacion2();
//CON FUNCIONES FLECHA
$operacion = fn() => $resultado * 10;
echo $operacion();
Dando como resultado 100 en ambos casos.
REFERENCIAS
Answered by BetaM on November 10, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP