laravel

Laravel BadMethodCallException Metoda [find] neexistuje

Laravel BadMethodCallException Metoda [find] neexistuje

Problém

Snažil jsem se získat výmluvný model z databáze, ale stále se dostat do BadMethodCallExceptionMethod [najít] neexistuje.

Tady jsem se zatím snažil:

jmenný prostor App;
použijte Illuminate \ Database \ Eloquent \ Model;
používat App \ Organization;
třída Uživatel rozšiřuje Model
/ **
* Databázová tabulka používaná modelem.
*
* @var řetězec
* /
protected $ table = 'users';
/ **
* Atributy vyloučené z formuláře JSON modelu.
*
* @var pole
* /
protected $ hidden = array ('password');
veřejné funkční organizace ()

vrátit $ this-> patříToMany (organizace :: třída);

Toto je základní třída User, která je součástí každého nového projektu Laravel. Po vytvoření nového uživatele vidím jasně, že v databázi existuje uživatel s ID3. Když však udělám následující, skončím s BadMethodCallException Metoda [find] neexistuje

třída Uživatel rozšiřuje BaseController
veřejná funkce getUser ($ id)

$ my_user = Uživatel :: najít ($ id);
zpětný pohled („uživatelé.index ', array (' user '=> $ my_user));

Trasy souborů My Routes \ web.php:

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

návrat View :: make ('test');
);

Řešení

Existuje několik problémů s touto implementací, které mohou způsobovat, že budete dostávat BadMethodCallException Metoda [find] neexistuje výjimka.

Poté byste měli mít přístup k vašemu modelu App \ User, jak jste zamýšleli.

Další vysvětlení (pouze pro vzdělávací účely)

Jak víte, vývoj webových aplikací nikdy neměl být přehlídkou pro jednoho člověka. Obecně můžete očekávat, že budete spolupracovat s dalšími vývojáři asi 90% času. Aby byl projekt úspěšný, musíte se ujistit, že všichni dodržují obecná pravidla kódování.

Jedno z pravidel bude o konvenci pojmenování a chápu, že dodržování definitivní konvence pojmenování vyžaduje hodně úsilí a může potenciálně plýtvat spoustou času týmu, dokud jim každý nebude rozumět a nebude se jimi řídit. To je obzvláště těžké pro nové vývojáře, kteří se připojí k týmu.

Navrhoval bych, abyste se pokusili přečíst více kódu jiných lidí, než začnete psát svůj, jen abyste získali představu o nejlepších praktikách v oboru.

Některá pravidla jsou povinná a některá jsou ponechána na týmu, aby se rozhodl, jak chce přistupovat.

Při pohledu na problém shora si všimnete, že všechny třídy by měly být psány v StudlyCaps, takže UserController a ne user_controller .

A toto je příklad povinného pravidla, které je třeba dodržovat.

Příklad toho, co byste jako tým mohli definovat jako své interní pravidlo, je, jak pojmenujete své třídy, metody a proměnné.

Pokud se očekává, že projekt v průběhu času poroste, můžete určitě očekávat mnoho různých entit, které tak či onak zahrnují uživatele, takže je důležité, abyste pro své třídy, metody a proměnné nepřicházeli s neurčitými názvy.

Můj osobní tip je zde; nebojte se mít delší třídu nebo název metody. Pokud potřebujete komentář, který vysvětluje vaši metodu, může být název vaší metody pravděpodobně lepší.

Příkladem toho je, že pokud potřebujete získat uživatele z databáze s nějakou další podmínkou, možná jsou to uživatelé starší 50 let, pak nepojmenujte svou metodu getUsers . Lepší způsob, jak to pojmenovat, je getAllUsersOver50YearsOld .

Hry Nainstalujte si nejnovější Dolphin Emulator pro Gamecube a Wii na Linuxu
Nainstalujte si nejnovější Dolphin Emulator pro Gamecube a Wii na Linuxu
Emulátor Dolphin vám umožní hrát vybrané hry Gamecube a Wii na osobních počítačích se systémem Linux (PC). Jako volně dostupný herní emulátor s otevř...
Hry Jak používat GameConqueror Cheat Engine v Linuxu
Jak používat GameConqueror Cheat Engine v Linuxu
Tento článek popisuje průvodce používáním cheatovacího modulu GameConqueror v systému Linux. Mnoho uživatelů, kteří hrají hry v systému Windows, často...
Hry Nejlepší emulátory herních konzolí pro Linux
Nejlepší emulátory herních konzolí pro Linux
Tento článek uvádí seznam populárního softwaru pro emulaci herních konzolí, který je k dispozici pro Linux. Emulace je vrstva softwarové kompatibility...