laravel

Laravel BadMethodCallException Methode [find] existiert nicht

Laravel BadMethodCallException Methode [find] existiert nicht

Problem

Ich habe versucht, ein eloquent-Modell aus der Datenbank abzurufen, komme aber immer wieder in BadMethodCallExceptionMethod[finden] ist nicht vorhanden.

Folgendes habe ich bisher versucht:

Namensraum-App;
Verwenden Sie Illuminate\Database\Eloquent\Model;
App\Organisation verwenden;
Klasse Benutzer erweitert Modell
/**
* Die vom Modell verwendete Datenbanktabelle.
*
* @var-String
*/
geschützt $table = 'Benutzer';
/**
* Die aus dem JSON-Formular des Modells ausgeschlossenen Attribute.
*
* @var-Array
*/
geschützt $hidden = array('password');
Organisationen mit öffentlichen Funktionen ()

return $this->belongsToMany(Organization::class);

Dies ist eine grundlegende Benutzerklasse, die mit jedem neuen Laravel-Projekt geliefert wird. Nachdem ich einen neuen Benutzer angelegt habe, kann ich deutlich sehen, dass ein Benutzer mit ID3 in der Datenbank vorhanden ist. Wenn ich jedoch Folgendes tue, lande ich bei der BadMethodCallException Methode [find] existiert nicht

Klasse Benutzer erweitert BaseController
öffentliche Funktion getUser($id)

$my_user = Benutzer::find($id);
Ansicht zurück('Benutzer.index', array('user' => $my_user));

Meine Routen Datei routen\web.php:

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

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

Lösung

Es gibt einige Probleme mit dieser Implementierung, die dazu führen können, dass Sie . empfangen BadMethodCallException Methode [find] existiert nicht Ausnahme.

Danach sollten Sie wie beabsichtigt auf Ihr App\User-Modell zugreifen können.

Weitere Erläuterung (nur für Bildungszwecke)

Wie Sie wissen, war Webentwicklung nie eine One-Man-Show. Sie können im Allgemeinen davon ausgehen, dass Sie in etwa 90% der Zeit mit anderen Entwicklern zusammenarbeiten. Damit das Projekt erfolgreich ist, müssen Sie sicherstellen, dass sich alle an die allgemeinen Codierungsregeln halten.

Eine der Regeln wird sich um Namenskonventionen drehen und ich verstehe, dass das Einhalten einer bestimmten Namenskonvention viel Aufwand erfordert und möglicherweise viel Zeit des Teams verschwenden kann, bis jeder sie verstehen und befolgen kann. Dies ist besonders schwierig für neue Entwickler, die dem Team beitreten.

Ich würde vorschlagen, dass Sie versuchen, mehr Code anderer Leute zu lesen, bevor Sie anfangen, Ihren eigenen zu schreiben, nur um ein Gefühl für die besten Branchenpraktiken zu bekommen.

Einige Regeln sind obligatorisch und andere überlassen es dem Team, zu entscheiden, wie es vorgehen möchte.

Wenn Sie sich das Problem von oben ansehen, werden Sie feststellen, dass alle Klassen in StudlyCaps geschrieben werden sollten, also UserController und nicht user_controller .

Und dies ist ein Beispiel für eine obligatorische Regel, die zu befolgen ist.

Ein Beispiel dafür, was Sie als Team als Ihre interne Regel definieren könnten, ist die Benennung Ihrer Klassen, Methoden und Variablen.

Wenn von einem Projekt erwartet wird, dass es im Laufe der Zeit wächst, können Sie sicherlich viele verschiedene Entitäten erwarten, die auf die eine oder andere Weise einen Benutzer enthalten.

Mein persönlicher Tipp hier ist; Haben Sie keine Angst, einen längeren Klassen- oder Methodennamen zu haben. Wenn Sie einen Kommentar benötigen, der Ihre Methode erklärt, kann Ihr Methodenname wahrscheinlich besser sein.

Ein Beispiel dafür ist, dass Sie, wenn Sie Benutzer aus einer Datenbank mit einer zusätzlichen Bedingung abrufen müssen, möglicherweise Benutzer über 50 Jahre alt sind, Ihre Methode nicht getUsers nennen . Eine bessere Möglichkeit, es zu benennen, ist getAllUsersOver50YearsOld .

Kostenlose und Open-Source-Spiele-Engines für die Entwicklung von Linux-Spielen
Dieser Artikel behandelt eine Liste von kostenlosen und Open-Source-Spiele-Engines, die für die Entwicklung von 2D- und 3D-Spielen unter Linux verwend...
Shadow of the Tomb Raider für Linux Tutorial
Shadow of the Tomb Raider ist die zwölfte Erweiterung der Tomb Raider-Reihe – ein Action-Adventure-Franchise von Eidos Montrealdos. Das Spiel wurde vo...
So steigern Sie die FPS unter Linux?
FPS steht für Bilder pro Sekunde. Die Aufgabe von FPS besteht darin, die Bildrate bei Videowiedergaben oder Spielleistungen zu messen. In einfachen Wo...