laravel

Laravel BadMethodCallException-methode [vinden] bestaat niet

Laravel BadMethodCallException-methode [vinden] bestaat niet

Probleem

Ik heb geprobeerd een welsprekend model uit de database te halen, maar blijf doorgaan met: BadMethodCallExceptionMethode[vinden] bestaat niet.

Dit is wat ik tot nu toe heb geprobeerd:

naamruimte-app;
gebruik Illuminate\Database\Eloquent\Model;
gebruik App\Organisatie;
klasse Gebruiker breidt Model uit
/**
* De databasetabel die door het model wordt gebruikt.
*
* @var tekenreeks
*/
beschermd $table = 'gebruikers';
/**
* De kenmerken die zijn uitgesloten van het JSON-formulier van het model.
*
* @var-array
*/
beschermd $hidden = array('wachtwoord');
publieke functie organisaties()

retourneer $this->belongsToMany(Organisatie::class);

Dit is een basisgebruikersklasse die bij elk nieuw Laravel-project wordt geleverd. Nadat ik een nieuwe gebruiker heb gemaakt, kan ik duidelijk zien dat die gebruiker met ID3 in de database bestaat. Als ik echter het volgende doe, krijg ik de BadMethodCallException-methode [vinden] bestaat niet

class Gebruiker breidt BaseController uit
openbare functie getUser ($ id)

$my_user = Gebruiker::find($id);
return view('gebruikersuser.index', array('gebruiker' => $mijn_gebruiker));

Mijn routes bestand routes\web.php:

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

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

Oplossing

Er zijn een paar problemen met deze implementatie waardoor u mogelijk ontvangt BadMethodCallException-methode [vinden] bestaat niet uitzondering.

Nadat u dit hebt gedaan, zou u toegang moeten hebben tot uw App\User-model zoals u van plan was.

Nadere uitleg (alleen voor educatieve doeleinden)

Zoals u weet, is webontwikkeling nooit bedoeld geweest als een eenmanszaak. Over het algemeen kun je verwachten dat je ongeveer 90% van de tijd met andere ontwikkelaars zult samenwerken developers. Om het project succesvol te laten zijn, moet u ervoor zorgen dat iedereen de algemene codeerregels volgt.

Een van de regels gaat over naamgevingsconventies en ik begrijp dat het bijhouden van een duidelijke naamgevingsconventie veel moeite kost en mogelijk veel tijd van het team kan verspillen totdat iedereen ze kan begrijpen en volgen. Dit is vooral moeilijk voor nieuwe ontwikkelaars die zich bij het team voegen.

Ik zou willen voorstellen dat je probeert meer code van andere mensen te lezen voordat je de jouwe begint te schrijven, gewoon om een ​​idee te krijgen van de beste praktijken in de branche.

Sommige regels zijn verplicht en sommige worden overgelaten aan het team om te beslissen hoe ze willen benaderen.

Als je het probleem van bovenaf bekijkt, zul je merken dat alle klassen in een StudlyCaps moeten worden geschreven, dus UserController en niet user_controller .

En dit is een voorbeeld van een verplichte regel om te volgen.

Een voorbeeld van wat u als team zou kunnen definiëren als uw interne regel, is hoe u uw klassen, methoden en variabelen een naam geeft.

Als van een project wordt verwacht dat het in de loop van de tijd groeit, kun je zeker veel verschillende entiteiten verwachten die op de een of andere manier een gebruiker bevatten, dus het is belangrijk dat je geen vage namen voor je klassen, methoden en variabelen bedenkt.

Mijn persoonlijke tip hier is; wees niet bang om een ​​langere klasse of methodenaam te hebben. Als je een opmerking nodig hebt waarin je methode wordt uitgelegd, dan kan de naam van je methode waarschijnlijk beter zijn.

Een voorbeeld hiervan is dat als u gebruikers uit een database met een extra voorwaarde wilt halen, misschien zijn dat gebruikers ouder dan 50 jaar, uw methode dan niet getUsers noemen . Een betere manier om het een naam te geven is getAllUsersOver50YearsOld .

Installeer de nieuwste OpenRA Strategy Game op Ubuntu Linux
OpenRA is een Libre/Free Real Time Strategy-game-engine die de vroege Westwood-games nabootst, zoals de klassieke Command & Conquer: Red Alert. Gedist...
Installeer de nieuwste Dolphin Emulator voor Gamecube & Wii op Linux
Met de Dolphin Emulator kun je de door jou gekozen Gamecube- en Wii-spellen spelen op Linux Personal Computers (pc). Omdat het een vrij beschikbare e...
Hoe de GameConqueror Cheat Engine in Linux te gebruiken
Het artikel bevat een handleiding over het gebruik van de GameConqueror cheat-engine in Linux. Veel gebruikers die games op Windows spelen, gebruiken ...