laravel

Laravel BadMethodCallException metoda [pronađi] ne postoji

Laravel BadMethodCallException metoda [pronađi] ne postoji

Problem

Pokušavam iz baze podataka dobiti elokventni model, ali nastavljam ulaziti u njega BadMethodCallExceptionMethod [pronađi] ne postoji.

Evo što sam do sada pokušao:

App App;
koristiti Illuminate \ Database \ Eloquent \ Model;
koristiti App \ Organisation;
klasa Korisnik proširuje Model
/ **
* Tablica baze podataka koju koristi model.
*
* @var niz
* /
zaštićen $ table = 'users';
/ **
* Atributi izuzeti iz JSON obrasca modela.
*
* @var niz
* /
zaštićen $ hidden = array ('lozinka');
organizacije s javnom funkcijom ()

vrati $ this-> pripadaToMany (Organizacija :: klasa);

Ovo je osnovna korisnička klasa koja dolazi uz svaki novi Laravel projekt. Nakon stvaranja novog korisnika, jasno vidim da korisnik s ID3 postoji u bazi podataka. Međutim, kada učinim sljedeće, na kraju završim s Metoda BadMethodCallException [pronađi] ne postoji

klasa Korisnik proširuje BaseController
javna funkcija getUser ($ id)

$ my_user = Korisnik :: pronađi ($ id);
povratak pogled ('korisnici.indeks ', niz (' korisnik '=> $ moj_korisnik));

Datoteke Rute mojih ruta \ web.php:

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

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

Riješenje

Postoji nekoliko problema s ovom implementacijom zbog kojih biste mogli primiti Metoda BadMethodCallException [pronađi] ne postoji iznimka.

Nakon toga trebali biste moći pristupiti svom App \ User modelu kako ste namjeravali.

Daljnja objašnjenja (samo u obrazovne svrhe)

Kao što znate, web razvoj nikada nije značio biti samostalni show. Općenito možete očekivati ​​suradnju s drugim programerima oko 90% vremena. Da bi projekt bio uspješan, morate biti sigurni da svi slijede opća pravila kodiranja.

Jedno od pravila bit će o konvencijama imenovanja i razumijem da držanje koraka s određenom konvencijom imenovanja zahtijeva puno truda i potencijalno može izgubiti puno vremena tima dok ih svi ne mogu razumjeti i slijediti. To je posebno teško za nove programere koji se pridružuju timu.

Predložio bih vam da pokušate pročitati više tuđih koda prije nego što počnete pisati svoj, samo da biste stekli uvid u najbolje industrijske prakse.

Neka su pravila obavezna, a neka se prepuštaju timu da odluči kako želi pristupiti.

Gledajući problem odozgo, primijetit ćete da bi sve klase trebale biti napisane u StudlyCaps, dakle UserController, a ne user_controller .

I ovo je primjer obveznog pravila koje se treba pridržavati.

Primjer onoga što biste kao tim mogli definirati kao svoje unutarnje pravilo je kako imenujete svoje klase, metode i varijable.

Ako se očekuje da će projekt vremenom rasti, zasigurno možete očekivati ​​mnogo različitih entiteta koji na ovaj ili onaj način uključuju korisnika, tako da je važno da za svoje klase, metode i varijable ne izmišljate nejasna imena.

Moj osobni savjet ovdje je; ne bojte se imati duži razred ili naziv metode. Ako trebate imati komentar koji objašnjava vašu metodu, tada naziv vaše metode vjerojatno može biti bolji.

Primjer toga je da ako trebate dobiti korisnike iz baze podataka s nekim dodatnim uvjetom, možda su to korisnici stariji od 50 godina, tada nemojte imenovati svoju metodu getUsers . Bolji način imenovanja je getAllUsersOver50YearsOld .

Kako koristiti AutoKey za automatizaciju Linux igara
AutoKey je uslužni program za automatizaciju radne površine za Linux i X11, programiran na Python 3, GTK i Qt. Koristeći njegovu skriptiranje i MACRO ...
Kako prikazati brojač FPS-a u Linux igrama
Linux gaming dobio je velik poticaj kada je Valve najavio Linux podršku za Steam klijent i njihove igre 2012. godine. Od tada su mnoge AAA i indie igr...
Kako preuzeti i igrati Sid Meier's Civilization VI na Linuxu
Uvod u igru Civilization 6 moderan je pogled na klasični koncept predstavljen u seriji igara Age of Empires. Ideja je bila prilično jednostavna; započ...