Je crée une intégration de paiement à Laravel. De là, je veux enregistrer les 4 derniers chiffres de la carte à la base de données. Voici le tableau que j'ai utilisé pour enregistrer les données à la base de données.
$return_code = Payment::where('id', $transactionId)->update([
'return_code' => $status,
'return_message' => $status == 'success'? 'Successfully Captured': 'Payment Failed - ' .$errorMessage,
'tx_ref' => $transactionReference,
'transaction_amount' => !empty($amount) ? $amount : 0.00,
'brand' => $cardType,
'last4' => str_pad(substr($maskedPAN, -4), strlen(4), '*', STR_PAD_LEFT),
'holder' => $cardholderName,
'expiry' => $expiry,
'payment_gateway' => 3,
]);
return $status == 'success'?true : false;
3 Réponses :
en utilisant Si vous devez le conserver, vous devez passer à Varcharne. P> à Laravel Vous pouvez créer un Migration pour le changer ( https://laravel.com/docs/5.8/migrations#Modification -Columns ): p> Vous devrez peut-être exécuter si vous le pouvez 'T Modifier le type de données de colonne, une autre option permettrait de convertir les données en chaîne lors de l'exécution et d'utiliser int code> comme le type de données supprimera les zéros de gauche. compositeur nécessite la doctrine / DBAL code> p> STR_PAD () code> fonction, mais je ne pense pas que ce soit une bonne option ici. P > p>
Je suppose que vous utilisez mysql. p>
Depuis votre colonne, c'est un Aussi, int code> Vous ne pouvez pas car c'est un numéro et que le numéro n'est pas enregistré avec Zeros à gauche, à moins que vous spécifiez la colonne ZEROFILL code> int. . Ce que vous pouvez faire, c'est le modifier, alter code> la colonne et ajouter le zerofill code> à la colonne (ne pas changer le type) pour remplir avec zéros lorsque le numéro est inférieur à 4 chiffres. . p>
int (4) code> ne signifie pas que n'accepte que 0 ou 4 chiffres, vous pouvez même stocker 20 ou plus de 4 chiffres, sa plage ne change pas, vous devriez lire < un href = "https://stackoverflow.com/questions/5634104/what-is-the-size-of-column-of-int11-in-mysql-in-bytes"> Ce pour mieux comprendre . p>
Voici mon code. Si j'ajoute le Zerofill à la colonne 'Last4', comment devrais-je continuer? Aidez-moi, s'il vous plaît. Fonction publique UP () {SCHEMA :: Table ('Paiements', Fonction (Tableau $ $) {$ Table-> Integer ('Derniers') -> Nullable ();}); } code>
Je suis désolé pour la réponse tardive. Je pense que vous y parvenez déjà et j'ai trouvé une solution à votre problème, mais voici un lien sur ce que je parlais si vous voulez voir: Stackoverflow.com / A / 35108232
Étant donné que vous ne pouvez pas modifier le type de champ de table à partir de puis, utilisez toujours une méthode qui renvoie le nombre de chiffres requis pour récupérer le champ int code> à varchar code>, une meilleure solution serait de stocker votre valeur en tant que int < / code> comme last4 code> de Paiement code> p>
Quel est le type de données de
last4 code>? Int? Si oui, vous devez changer de varchar (4).Oui, c'est INT (4), mais il s'agit d'un projet en direct et ne peut pas modifier le type de données de la base de données, car une autre intégration de paiement est en cours d'exécution. Vous n'êtes pas une autre option que nous pouvons faire du code?
Pas tout ce qui est fondamentalement sûr. Ce n'est pas des données entières. L'autre intégration de paiement n'a pas d'importance; C'est "4 derniers" ne devrait pas être un entier non plus non plus. Pourquoi ne pouvez-vous pas faire un changement sur le type de colonne?