laravel

A Laravel BadMethodCallException módszer [keresés] nem létezik

A Laravel BadMethodCallException módszer [keresés] nem létezik

Probléma

Próbáltam beszerezni egy Eloquent modellt az adatbázisból, de folyamatosan belemegyek BadMethodCallExceptionMethod [keresés] nem létezik.

Itt van, amit eddig kipróbáltam:

névtér App;
használja az Illuminate \ Database \ Eloquent \ Model modellt;
használja az App \ Organization alkalmazást;
osztály Felhasználó kiterjeszti a modellt
/ **
* A modell által használt adatbázis tábla.
*
* @var karakterlánc
* /
védett $ table = 'felhasználók';
/ **
* A modell JSON űrlapjából kizárt attribútumok.
*
* @var tömb
* /
védett $ hidden = tömb ('jelszó');
közéleti szervezetek ()

return $ this-> tartozikToMany (Szervezet :: osztály);

Ez egy alapvető felhasználói osztály, amely minden új Laravel projekthez tartozik. Új felhasználó létrehozása után világosan látom, hogy az ID3 felhasználó létezik az adatbázisban. Amikor azonban a következőket teszem, végül a A BadMethodCallException metódus [keresés] nem létezik

class Felhasználó kiterjeszti a BaseController
getUser ($ id) nyilvános funkció

$ my_user = Felhasználó :: keresés ($ id);
visszatérő nézet ('felhasználók.index ', tömb (' user '=> $ my_user));

Saját útvonalak fájl útvonalak \ web.php:

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

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

Megoldás

Néhány olyan probléma merül fel ezzel a megvalósítással kapcsolatban, amely okozhatja a fogadását A BadMethodCallException [megtalálás] módszer nem létezik kivétel.

Ezt követően képesnek kell lennie arra, hogy elérje az App \ User modellt, ahogyan azt szándékozta.

További magyarázat (csak oktatási célokra)

Mint tudják, a webfejlesztés soha nem jelentett egyszemélyes show-t. Általában az idő kb. 90% -ában számíthat arra, hogy együttműködik más fejlesztőkkel. A projekt sikere érdekében meg kell győződnie arról, hogy mindenki betartja az általános kódolási szabályokat.

A szabályok a névadási konvenciókra vonatkoznak, és megértem, hogy a határozott elnevezési szokások betartása sok erőfeszítést igényel, és a csapat idejének nagy részét elpazarolhatja, amíg mindenki meg nem értette és betartja őket. Ez különösen nehéz a csapathoz csatlakozó új fejlesztők számára.

Azt javaslom, hogy próbáljon meg többet elolvasni mások kódjából, mielőtt elkezdené írni a sajátját, csak azért, hogy megértse a legjobb ipari gyakorlatokat.

Egyes szabályok kötelezőek, másokat pedig a csapatnak kell eldöntenie, hogy miként akarnak megközelíteni.

A kérdést felülről nézve észreveheti, hogy az összes osztályt StudlyCaps-ba kell írni, tehát UserController és nem user_controller .

Ez pedig egy követendő kötelező szabály példája.

Most egy példa arra, amit csapatként meghatározhat belső szabályként, az, hogyan nevezi meg osztályait, módszereit és változóit.

Ha várhatóan egy projekt idővel növekszik, akkor biztosan sok különböző entitásra számíthat, amelyek ilyen vagy olyan módon tartalmaznak egy felhasználót, ezért fontos, hogy ne állítson elő homályos neveket osztályai, módszerei és változói számára.

Személyes tippem itt van; ne féljen attól, hogy hosszabb osztály vagy metódus neve van. Ha megjegyzésre van szüksége, amely elmagyarázza a módszerét, akkor valószínűleg a módszer neve lehet jobb.

Példa erre, hogy ha valamilyen további feltétellel kell felhasználókat szereznie egy adatbázisból, esetleg 50 évnél idősebb felhasználók, akkor ne nevezze meg a módszerét a getUsers néven . A megnevezésének jobb módja a getAllUsersOver50YearsOld .

SuperTuxKart Linuxhoz
A SuperTuxKart egy nagyszerű cím, amelynek célja, hogy ingyenesen hozza el a Mario Kart élményét Linux rendszerén. Elég kihívást jelentő és szórakozta...
Csata a Wesnoth bemutatóért
A Battle for Wesnoth az egyik legnépszerűbb nyílt forráskódú stratégiai játék, amelyet jelenleg játszhatsz. Ez a játék nem csak nagyon hosszú ideje fe...
0 A.D. Bemutató
A sok stratégiai játék közül 0 A.D. átfogó címként és nagyon mély, taktikus játékként képes kiemelkednie annak ellenére, hogy nyílt forráskódú. A játé...