laravel

Il metodo Laravel BadMethodCallException [trova] non esiste

Il metodo Laravel BadMethodCallException [trova] non esiste

Problema

Ho cercato di ottenere un modello Eloquente dal database, ma continuo ad entrare BadMethodCallExceptionMethod[trova] non esiste.

Ecco cosa ho provato finora:

spazio dei nomi app;
usa Illumina\Database\Eloquent\Model;
usa App\Organizzazione;
class L'utente estende il modello
/**
* La tabella del database utilizzata dal modello.
*
* @var stringa
*/
protetto $table = 'utenti';
/**
* Gli attributi esclusi dal modulo JSON del modello.
*
* @var array
*/
protetto $nascosto = array('password');
organizzazioni di funzione pubblica()

return $this->belongsToMany(Organizzazione::classe);

Questa è una classe utente di base che viene fornita con ogni nuovo progetto Laravel. Dopo aver creato un nuovo utente, posso vedere chiaramente che l'utente con ID3 esiste nel database. Tuttavia, quando faccio quanto segue, finisco con il Il metodo BadMethodCallException [trova] non esiste

class User estende BaseController
funzione pubblica getUser($id)

$my_user = Utente::find($id);
return view('utenti.index', array('user' => $my_user));

I miei percorsi file route\web.php:

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

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

Soluzione

Ci sono alcuni problemi con questa implementazione che potrebbero farti ricevere Il metodo BadMethodCallException [trova] non esiste eccezione.

Dopo averlo fatto, dovresti essere in grado di accedere al tuo modello App\Utente come previsto.

Ulteriori spiegazioni (solo per scopi didattici)

Come sai, lo sviluppo web non è mai stato concepito per essere uno spettacolo personale. In genere puoi aspettarti di collaborare con altri sviluppatori circa il 90% delle volte. Affinché il progetto abbia successo, devi assicurarti che tutti seguano le regole generali di codifica.

Una delle regole riguarderà le convenzioni di denominazione e capisco che tenere il passo con una convenzione di denominazione definita richiede molto sforzo e può potenzialmente sprecare molto tempo del team finché tutti non possono capirle e seguirle. Questo è particolarmente difficile per i nuovi sviluppatori che si uniscono al team.

Ti suggerirei di provare a leggere più codice di altre persone prima di iniziare a scrivere il tuo, solo per avere un'idea delle migliori pratiche del settore.

Alcune regole sono obbligatorie e alcune sono lasciate al team per decidere come vogliono avvicinarsi.

Guardando il problema dall'alto, noterai che tutte le classi dovrebbero essere scritte in uno StudlyCaps, quindi UserController e non user_controller .

E questo è un esempio di regola obbligatoria da seguire.

Ora, un esempio di ciò che tu come squadra potresti definire come regola interna è il modo in cui dai un nome alle tue classi, metodi e variabili.

Se ci si aspetta che un progetto cresca nel tempo, puoi certamente aspettarti molte entità diverse che in un modo o nell'altro includono un utente, quindi è importante che non ti vengano in mente nomi vaghi per le tue classi, metodi e variabili.

Il mio consiglio personale qui è; non aver paura di avere una classe più lunga o un nome di metodo. Se hai bisogno di un commento che spieghi il tuo metodo, probabilmente il nome del tuo metodo può essere migliore.

Un esempio di ciò è che se hai bisogno di ottenere utenti da un database con qualche condizione aggiuntiva, forse quelli sono utenti con più di 50 anni, allora non nominare il tuo metodo getUsers . Un modo migliore per chiamarlo è getAllUsersOver50YearsOld .

SuperTuxKart per Linux
SuperTuxKart è un fantastico titolo progettato per offrirti l'esperienza di Mario Kart gratuitamente sul tuo sistema Linux. È piuttosto impegnativo e ...
Tutorial Battaglia per Wesnoth
The Battle for Wesnoth è uno dei giochi di strategia open source più popolari a cui puoi giocare in questo momento. Non solo questo gioco è in svilupp...
0 A.D. Tutorial
Tra i tanti giochi di strategia in circolazione, 0 A.D. riesce a distinguersi come un titolo completo e un gioco molto profondo e tattico nonostante s...