laravel

Laravel BadMethodCallException Metóda [find] neexistuje

Laravel BadMethodCallException Metóda [find] neexistuje

Problém

Snažil som sa z modelu získať výmluvný model, ale stále sa do toho dostávam BadMethodCallExceptionMethod [nájsť] neexistuje.

Tu som sa zatiaľ snažil:

aplikácia namespace;
použite Illuminate \ Database \ Eloquent \ Model;
používať aplikáciu \ organizácia;
trieda Používateľ rozširuje Model
/ **
* Databázová tabuľka používaná modelom.
*
* @var reťazec
* /
protected $ table = 'users';
/ **
* Atribúty vylúčené z formulára JSON modelu.
*
* @var pole
* /
chránený $ skrytý = pole ('heslo');
verejné funkčné organizácie ()

vrátiť $ this-> patříToMany (Organizácia :: trieda);

Toto je základná trieda používateľov, ktorá je súčasťou každého nového projektu Laravel. Po vytvorení nového používateľa jasne vidím, že v databáze existuje používateľ s ID3. Keď však urobím nasledovné, nakoniec skončím s Metóda BadMethodCallException [nájsť] neexistuje

trieda User rozširuje BaseController
verejná funkcia getUser ($ id)

$ my_user = Užívateľ :: nájsť ($ id);
spätné zobrazenie („používatelia.index ', array (' user '=> $ my_user));

Trasy súborov My Routes \ web.php:

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

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

Riešenie

S touto implementáciou sa môže stretnúť niekoľko problémov, ktoré môžu spôsobiť, že sa vám zobrazí Metóda BadMethodCallException [nájsť] neexistuje výnimkou.

Potom by ste mali mať prístup k svojmu modelu App \ User tak, ako ste zamýšľali.

Ďalšie vysvetlenie (iba na vzdelávacie účely)

Ako viete, vývoj webových aplikácií nikdy nemal byť šou jedného človeka. Všeobecne môžete očakávať, že budete s ostatnými vývojármi spolupracovať asi 90% času. Aby bol projekt úspešný, musíte sa ubezpečiť, že všetci dodržiavajú všeobecné pravidlá kódovania.

Jedno z pravidiel sa bude týkať konvencií o pomenovaní a chápem, že dodržiavanie definitívnej konvencie pomenovania si vyžaduje veľa úsilia a môže potenciálne stratiť veľa času tímu, kým ich každý pochopí a nebude ich dodržiavať. Je to obzvlášť ťažké pre nových vývojárov, ktorí sa k tímu pridajú.

Navrhujem, aby ste sa pokúsili prečítať viac kódu iných ľudí skôr, ako začnete písať svoj kód, len aby ste získali predstavu o najlepších postupoch v odbore.

Niektoré pravidlá sú povinné a niektoré sú ponechané na tím, aby rozhodol, ako chce pristúpiť.

Pri pohľade na problém zhora si všimnete, že všetky triedy by mali byť písané v StudlyCaps, takže UserController a nie user_controller .

A toto je príklad povinného pravidla, ktorým sa treba riadiť.

Príkladom toho, čo by ste ako tím mohli definovať ako svoje interné pravidlo, je príklad, ako pomenujete svoje triedy, metódy a premenné.

Ak sa očakáva, že projekt časom porastie, určite môžete očakávať veľa rôznych entít, ktoré tak či onak zahŕňajú používateľa, takže je dôležité, aby ste pre svoje triedy, metódy a premenné neprichádzali s neurčitými názvami.

Môj osobný tip je; nebojte sa mať dlhšiu triedu alebo názov metódy. Ak potrebujete komentár, ktorý vysvetľuje vašu metódu, názov vašej metódy môže byť pravdepodobne lepší.

Príkladom toho je, že ak potrebujete získať používateľov z databázy s nejakými ďalšími podmienkami, možno sú to používatelia starší ako 50 rokov, nepomenujte svoju metódu getUsers . Lepší spôsob, ako to pomenovať, je getAllUsersOver50YearsOld .

Hry Top 10 hier, ktoré sa dajú hrať na Ubuntu
Top 10 hier, ktoré sa dajú hrať na Ubuntu
Platforma Windows je jednou z dominujúcich platforiem pre hry kvôli obrovskému percentu hier, ktoré sa dnes vyvíjajú na natívnu podporu systému Window...
Hry 5 najlepších arkádových hier pre Linux
5 najlepších arkádových hier pre Linux
V dnešnej dobe sú počítače vážne stroje používané na hranie hier. Ak nemôžete dosiahnuť nové najvyššie skóre, budete vedieť, čo tým myslím. V tomto pr...
Hry Battle For Wesnoth 1.13.6 Vývoj uvoľnený
Battle For Wesnoth 1.13.6 Vývoj uvoľnený
Battle For Wesnoth 1.13.6 vydané minulý mesiac, je šiestym vývojovým vydaním v 1.13.séria x a prináša množstvo vylepšení, najmä používateľského rozhra...