laravel

La méthode Laravel BadMethodCallException [trouver] n'existe pas

La méthode Laravel BadMethodCallException [trouver] n'existe pas

Problème

J'ai essayé d'obtenir un modèle Eloquent à partir de la base de données, mais je continue à entrer dans BadMethodCallExceptionMethod[trouver] n'existe pas.

Voici ce que j'ai essayé jusqu'à présent :

application d'espace de noms ;
utilisez Illuminate\Database\Eloquent\Model ;
utilisez App\Organisation ;
class L'utilisateur étend le modèle
/**
* La table de base de données utilisée par le modèle.
*
* @var chaîne
*/
table $ protégée = 'utilisateurs';
/**
* Les attributs exclus du formulaire JSON du modèle.
*
* @var tableau
*/
protected $hidden = array('password');
organismes de fonction publique()

return $this->belongsToMany(Organization::class);

Il s'agit d'une classe utilisateur de base fournie avec chaque nouveau projet Laravel. Après avoir créé un nouvel utilisateur, je peux clairement voir que l'utilisateur avec ID3 existe dans la base de données. Cependant, lorsque je fais ce qui suit, je me retrouve avec le La méthode BadMethodCallException [find] n'existe pas

class L'utilisateur étend BaseController
fonction publique getUser($id)

$mon_utilisateur = Utilisateur::find($id);
return view('utilisateurs.index', array('user' => $my_user));

Mes routes fichier routes\web.php :

Route::get('user/id', '[email protected]');
Route::get('/', fonction()

return View::make('test');
);

Solution

Il y a quelques problèmes avec cette implémentation qui pourraient vous amener à recevoir La méthode BadMethodCallException [find] n'existe pas exception.

Après cela, vous devriez pouvoir accéder à votre modèle App\User comme vous le souhaitiez.

Explication supplémentaire (à des fins éducatives uniquement)

Comme vous le savez, le développement web n'a jamais voulu être un one-man show. Vous pouvez généralement vous attendre à collaborer avec d'autres développeurs environ 90 % du temps. Pour que le projet réussisse, vous devez vous assurer que tout le monde respecte les règles générales de codage.

L'une des règles concernera les conventions de nommage et je comprends que le respect d'une convention de nommage définie demande beaucoup d'efforts et peut potentiellement faire perdre beaucoup de temps à l'équipe jusqu'à ce que tout le monde puisse les comprendre et les suivre. C'est particulièrement difficile pour les nouveaux développeurs qui rejoignent l'équipe.

Je vous suggère d'essayer de lire plus de code d'autres personnes avant de commencer à écrire le vôtre, juste pour avoir une idée des meilleures pratiques de l'industrie.

Certaines règles sont obligatoires et d'autres sont laissées à l'équipe de décider de la manière dont elle souhaite aborder.

En regardant le problème ci-dessus, vous remarquerez que toutes les classes doivent être écrites dans un StudlyCaps, donc UserController et non user_controller .

Et ceci est un exemple de règle obligatoire à suivre.

Maintenant, un exemple de ce que vous, en tant qu'équipe, pourriez définir comme règle interne est la façon dont vous nommez vos classes, méthodes et variables.

Si l'on s'attend à ce qu'un projet grandisse au fil du temps, vous pouvez certainement vous attendre à de nombreuses entités différentes qui, d'une manière ou d'une autre, incluent un utilisateur. Il est donc important que vous ne trouviez pas de noms vagues pour vos classes, méthodes et variables.

Mon conseil personnel ici est; n'ayez pas peur d'avoir une classe plus longue ou un nom de méthode. Si vous avez besoin d'un commentaire qui explique votre méthode, alors le nom de votre méthode peut probablement être meilleur.

Un exemple de ceci est que si vous avez besoin d'obtenir des utilisateurs d'une base de données avec une condition supplémentaire, peut-être qu'il s'agit d'utilisateurs de plus de 50 ans, alors ne nommez pas votre méthode getUsers . Une meilleure façon de le nommer est getAllUsersOver50YearsOld .

Moteurs de jeux gratuits et open source pour le développement de jeux Linux
Cet article couvrira une liste de moteurs de jeux gratuits et open source qui peuvent être utilisés pour développer des jeux 2D et 3D sur Linux. Il ex...
Tutoriel Shadow of the Tomb Raider pour Linux
Shadow of the Tomb Raider est le douzième ajout à la série Tomb Raider - une franchise de jeux d'action-aventure créée par Eidos Montréal. Le jeu a ét...
Comment booster les FPS sous Linux?
FPS signifie Images par seconde. La tâche du FPS est de mesurer la fréquence d'images dans les lectures vidéo ou les performances de jeu. En termes si...