Težava
Poskušal sem pridobiti model Zgovorna iz baze podatkov, vendar še naprej vstopajo BadMethodCallExceptionMethod [najti]
ne obstaja.
Tukaj sem poskusil do zdaj:
App za imenski prostor;uporabite Illuminate \ Database \ Eloquent \ Model;
uporaba aplikacije \ Organizacija;
razred Uporabnik razširja Model
/ **
* Tabela zbirke podatkov, ki jo uporablja model.
*
* @var niz
* /
zaščitena $ table = 'uporabniki';
/ **
* Atributi so izključeni iz obrazca JSON modela.
*
* matrika @var
* /
zaščiten $ hidden = array ('geslo');
organizacije javne funkcije ()
vrni $ this-> pripadaToMany (Organizacija :: razred);
To je osnovni uporabniški razred, ki je priložen vsakemu novemu projektu Laravel. Po ustvarjanju novega uporabnika jasno vidim, da v bazi podatkov obstaja uporabnik z ID3. Ko pa naredim naslednje, na koncu dobim Metoda BadMethodCallException [najti] ne obstaja
javna funkcija getUser ($ id)
$ my_user = Uporabnik :: find ($ id);
vrni pogled ('uporabniki.index ', array (' user '=> $ my_user));
Datoteke poti moje poti \ splet.php:
Route :: get ('user / id', '[email protected]');Route :: get ('/', function ()
return View :: make ('test');
);
Rešitev
Pri tej izvedbi je nekaj težav, zaradi katerih boste morda prejeli Metoda BadMethodCallException [najti] ne obstaja
izjema.
- Upoštevajte najboljše postopke pri imenovanju krmilnikov kot besedo Model + »Krmilnik«, tako da namesto uporabnika dobite UserController .
- Razred Uporabnik, na katerega se sklicujete tukaj, dejansko ni povezan z vašim modelom App \ User. Če ga opazite, svojega modela niste nikoli izrecno vključili. Ob predpostavki, da ste že popravili prejšnjo točko, bi morali v svoj UserController vključiti razredUser . Šele nato lahko s tem razredom naredite nove predmete. Torej v svojem UserController pojdite in dodajte use App \ User; na vrhu. (Opazite, kako sem vključil aplikacijo \ Organizacija)
- Ko ga popravite, zaženite composer dump -o za regeneracijo skladatelja.lock, ki bo pripomogla k hitrejšemu nalaganju predavanj.
Po tem bi morali imeti dostop do modela App \ User, kot ste želeli.
Nadaljnja razlaga (samo za izobraževalne namene)
Kot veste, spletni razvoj še nikoli ni pomenil samostojne predstave. Na splošno lahko pričakujete, da boste približno 90% časa sodelovali z drugimi razvijalci. Da bo projekt uspešen, se morate prepričati, da vsi upoštevajo splošna pravila kodiranja.
Ena od pravil bo o pravilih poimenovanja in razumem, da sledenje določeni konvenciji poimenovanja zahteva veliko truda in lahko potencialno zapravi veliko časa ekipe, dokler jih vsi ne bodo razumeli in jim sledili. To je še posebej težko za nove razvijalce, ki se pridružijo ekipi.
Predlagam vam, da poskusite prebrati več kod drugih ljudi, preden začnete pisati svojo, samo zato, da dobite občutek o najboljših industrijskih praksah.
Nekatera pravila so obvezna, nekatera pa so prepuščena ekipi, da se odloči, kako želi pristopiti.
Če pogledate težavo od zgoraj, boste opazili, da bi morali biti vsi razredi napisani v StudlyCaps, torej UserController in ne user_controller .
In to je primer obveznega pravila, ki ga je treba upoštevati.
Zdaj je primer tega, kar bi kot ekipa lahko opredelili kot svoje notranje pravilo, kako poimenujete svoje razrede, metode in spremenljivke.
Če se pričakuje, da bo projekt sčasoma naraščal, lahko zagotovo pričakujete veliko različnih entitet, ki na tak ali drugačen način vključujejo uporabnika, zato je pomembno, da za svoje razrede, metode in spremenljivke ne izmišljujete nejasnih imen.
Tukaj je moj osebni namig; ne bojte se daljšega razreda ali imena metode. Če potrebujete komentar, ki pojasnjuje vašo metodo, je ime vaše metode verjetno lahko boljše.
Primer tega je, da če želite uporabnike pridobiti iz zbirke podatkov z nekaterimi dodatnimi pogoji, so to morda uporabniki, starejši od 50 let, potem metode ne poimenujte getUsers . Boljši način poimenovanja je getAllUsersOver50YearsOld .