Agregar 0 a la izquierda – PHP

publicado por: Anonymous

Mi problema es el siguiente: A la hora de crear un nuevo cliente, necesito que en la base de datos se guarden 6 dígitos, comenzando con 000001. El problema es que al guardarlo, en MySQL me guarda solo el 1 y necesito que me guarde los 6 dígitos.

El campo numero_tarjeta de la tabla cliente es el que necesito que se guarde con los 6 dígitos.

Este es el controlador para agregar un nuevo cliente:

public function create()
    {
        $user = Auth::user();
        $nombre = $user->name;

        //obtenemos todas las categorias para cargar el combobox
        $cliente = Cliente::all();
        return view('cliente.crearCliente',['nombre'=>$nombre,'titulo'=>'Crear Cliente']);
    }



    public function store(Request $request)
    {
        ///validamos los campos enviados
        $validator =  Validator::make($request->all(), [
            'nombre' => 'required|min:3|regex:/^[pLs-]+$/u',
            'apellido' => 'required|min:3|regex:/^[pLs-]+$/u',
            'dni' => 'required|min:7|max:8',
            'fecha_nacimiento' => 'date_format:d/m/Y',
            'celular' => 'min:9',
            'email' => 'email',
            'cantidad_puntos' => 'required|numeric',
            'numero_tarjeta' => 'required'
        ]);

        $numero_tarjeta = $request->input('numero_tarjeta');

        //si falla la validacion, redireccionamos con los errores
        if ($validator->fails())
        {
            $errors = $validator->errors();
            $errors =  json_decode($errors);

            return response()->json([
                'success' => false,
                'message' => $errors
            ], 422);
        } else{
            //si no falla la validacion, se carga el cliente en la BD e informamos

            //cambiamos el formato de la fecha
            $fecha_nacimiento = $date = str_replace('/', '-', $request->input('fecha_nacimiento'));
            $request->merge(array('fecha_nacimiento' => date("Y-m-d", strtotime($fecha_nacimiento))));
            //$request->merge(array('fecha_nacimiento' => date("Y-m-d", strtotime($request->input('fecha_nacimiento')))));

            $numero_tarjeta = LPAD('numero_tarjeta',6,'0');


            //guardar los datos
            $cliente = New Cliente();
            $cliente->create($request->all());

            return response()->json([
                'success' => true,
                'message' => 'record updated'
            ], 200);
        }
    }

Y mi tabla cliente es la siguiente:

Schema::create('clientes', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre');
            $table->string('apellido');
            $table->string('dni');
            $table->date('fecha_nacimiento');
            $table->string('celular');
            $table->string('email');
            $table->integer('cantidad_puntos');
            $table->integer('numero_tarjeta')->unique();
            $table->rememberToken();
            $table->timestamps();
        });

solución

numero_de_tarjeta es un campo entero que necesitas desplegar como un string. Algo como

$numero_de_tarjeta_texto = str_pad($number,6,"0",STR_PAD_LEFT); 
Respondido por: Anonymous

Leave a Reply

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