PHP LARAVEL 5.6, Cómo usar una variable en cualquier controlador

publicado por: Anonymous

estoy iniciando en el mundo de la programación y en PHP, tengo un problema con una app que estoy desarrollando. Mi problema es este:
Quiero encontrar todas las facturas que tiene el usuario que inicio sesión, la validación de sí existe o no la tengo, aún así no estoy usando los session_start y demás.
Quiero hacer una consulta en que me liste todas las facturas según el documento que uso para ingresar al sistema.
Pero no sé cómo hacer para crear una variable que me guarde lo que tiene el resultado del input y poder utilizarla en todos los controladores. Espero habermee explicado bien.
Aquí el código del login:

   <form id="login-form" method="post" action="{{URL::TO('login')}}" name="login">
        @csrf

          <div class="form-group">
            <label for="usuario">Nit*</label>
            <input class="form-control" type="number" id="usuario" name="usuario" placeholder="Ej: 20003" required="">
          </div>             
          <div class="form-group">
          <label for="password">Contraseña*</label>
          <input class="form-control" type="password" id="password" name="password" placeholder="Ingrese su contraseña" required="" >            
         <br>
          <hr>          
          </div>
          <button class="btn btn-success btn-block" name="boton" type="submit" style="cursor: pointer;">Ingresar</button>



    -----------------LOGIN CONTROLLER----------
   public function store(Request $request)
    {
        //

        $nit = $request->input('usuario');
        $clave = $request->input('password');

        $data = DB::select('select cod_rol from tbl_empresas where nit=? and clave=?' , [$nit, $clave]);
        $sec=TblEmpresa::all();
        $col1=DB::select('select cod_rol from tbl_rols where cod_rol = 1');
        $col2=DB::select('select cod_rol from tbl_rols where cod_rol = 2');

        if (count($data)) {
            if ($data == $col1) {
                # code...         

             session_start();

            } else {
                # code...
             session_start();
            return redirect()->action('[email protected]');
            }

                # code...
        }else {
            echo "<div class='card mt-4'>"."<i class='text-center' style='padding:10px;font-size:15px; color:rgba(252, 27, 27,0.6);'  >"."El usuario no existe, digite los datos correctamente."."</i>"."</div>";
            return view('/login');

        }


    }

solución

Si estas recién empezando no te recomiendo que te mandes a hacer un login personalizado.
Mi sugerencia para tu problema es de una simple solución.

Según lo que entedí en tu pregunta querés poder acceder en cualquier momento a las facturas del usuario.
1º Si queres cambiarle el nombre a la tabla/Modelo users hacelo y despues actualiza el archivo config/auth.php

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => AppUser::class,
    ],
],

2º Creá un metodo relacionando el usuario con sus facturas.
Suponiendo que la tabla se llama facturas y el modelo Factura

User::class
Relación One To Many

/* El usuario puede tener muchas facturas */
public function facturas() {
    return $this->hasMany('AppFactura'); // por convención busca el campo user_id en la tabla facturas
}

Factura::class
Relación One To Many (inversa)

/* Una factura solo tiene 1 usuario */
public function user() {
    return $this->belongsTo('AppUser','user_id');
}

3º Una vez relacionados los modelos podes hacer:

  • auth()->user()->facturas para obtener todas las facturas que tiene el usuario logueado (autenticado)

  • User::with('facturas') para obtener los usuarios con sus facturas

  • User::find(1)->with('facturas') para obtener un usuario con sus facturas

  • User::first()->with('facturas') para obtener el primer usuario con sus facturas

  • Factura::first()->user para obtener una factura con su usuario

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *