Essayer de créer une API pour un script de paiement. mais je veux utiliser l'API pour afficher par $merchant_id ou $numéro de référence. Mais lorsque j'essaie d'obtenir avec json, ne renvoie que par $ id qui est la clé primaire.

Comment puis-je le faire afficher par $merchant_id qui est une chaîne ?

Voici le code dans UserController

public function show($merchant_key)
{
    return Exttransfer::find($merchant_key);
    
 
}

Et le code dans App/Api

Route::get('Exttransfer/{$merchant_key}', 'UserController@show');

Peu importe ce que je fais, cela ne s'affiche que par $ id Un exemple de merchant_key est ) OBGDTE36B2

1
Shamar Gray 18 mars 2021 à 05:38

2 réponses

Meilleure réponse

Comme find() récupère le modèle par sa clé primaire, Laravel considère donc $merchant_key comme identifiant. Essaye ça

De:

public function show($merchant_key)
{
    return Exttransfer::find($merchant_key);
}

À :

public function show($merchant_key)
{
    return Exttransfer::where('merchant_key',$merchant_key)->get();
}

Si vous souhaitez obtenir un enregistrement unique, utilisez first() au lieu de get().

En savoir plus sur find()

1
Rajen Trivedi 18 mars 2021 à 10:48

D'après une documentation éloquente :

#trouver($clé)

La méthode find renvoie le modèle qui a une clé primaire correspondant à la clé donnée. Si $key est une instance de modèle, find tentera de renvoyer un modèle correspondant à la clé primaire. Si $key est un tableau de clés, find renverra tous les modèles qui ont une clé primaire dans le tableau donné

Vous devriez donc utiliser quelque chose comme return Exttransfer::where('merchant_key', $merchant_key)->first();

0
Farid 18 mars 2021 à 02:46