Laravel Eloquent Beitreten
Ich bin Recht neu mit Laravel. Ich bin immer noch versuchen, es zu lernen. Meine Frage ist:
Ich habe 3 Tabellen mit dem Namen
- Spiele
- game_options
-
game_platforms
Habe ich 3 Modelle für die Tabellen
-
Spiel-Modell
class Game extends Eloquent { protected $table = 'games'; public function platforms() { return $this->hasManyThrough('GamePlatform','GameOptions','id','game_id'); } }
-
GamePlatform Modell
class GamePlatform extends Eloquent { protected $table = 'game_platform'; }
-
GameOption Modell
class GameOptions extends Eloquent { protected $table = 'game_options'; }
So, wenn ich
$game = Game::find(1)->platforms;
Zeigt nur,
{"id":1,"platform_id":20,"game_id":1}
{"id":1,"platform_id":21,"game_id":1}
{"id":1,"platform_id":22,"game_id":1}
{"id":1,"platform_id":23,"game_id":1}
{"id":1,"platform_id":24,"game_id":1}
Aber ich brauche Namen für das Spiel eingeben und Plattform-Namen mit solchen ID ' s. Die Sache ist die, ich möchte dies mit beredten nur. Ich konnte gehen, mit "DB" oder oldschool-SQL, aber ich möchte, um zu erfahren, ob dieser Weg möglich ist oder nicht.
Auch ich bin auf der Suche nach einer besseren Dokumentation/Bücher für laravel. Die meisten von was ich gelesen habe wurden nur vorstellen, laravel oder viel zu Fortgeschritten für mich.
- Ich könnte Weg Basis hier, aber ich habe das Gefühl, dass Sie
hasManyThrough
wennbelongsToMany
würde hier passen. Ich weiß nicht viel überhasManyThrough
so kann man sicherlich sagen Sie mir, wenn ich falsch bin, aber vielleicht versuchen Sie, dies zu ändern. Zumindest dann ruft$game->platforms()
wird Ihnen eineCollection
vonGameOption
s nichtGamePlatform
s
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinterließ ich einen Kommentar früher, aber jetzt bin ich ziemlich sicher, dass es die Antwort, die Sie suchen: Sie sollten
belongsToMany
eher alshasManyThrough
. Also erstmal, könnte ich schlage vor, Sie benennen Sie Ihre Tabellen und Modelle zu Folgen, Laravel, den Konventionen (plural snake_case Tabellennamen in der Einzahl snake_case alphabetischer Reihenfolge pivot Tabellen-Namen in der Einzahl StudlyCaps Modell-Namen), so haben Sie die folgende situation:Tabellen:
Nun, Sie können schreiben Sie Ihre Modelle entsprechen der neuen Struktur, und verwenden Sie eine belongsToMany Beziehung zu:
Hinweis: Sie müssen nicht Modell die pivot-Tabelle (
game_option
), es sei denn, Sie speichern zusätzliche Daten auf die pivot.Nun sollten Sie gut sein, um alle Optionen für ein bestimmtes Spiel:
Oder wenn Sie brauchen, um alle Plattformen (obwohl ich versucht bin, zu folgern Bedeutung der code hier in Bezug auf Optionen und Plattformen):
können Sie die mit Methode mit beredten
Sollten Sie wieder das Spiel und Plattformen
Für die Dokumentation würde ich zunächst mit der Dokumentation zur Verfügung gestellt (finde es zu etwa 50% abgeschlossen) und mit der api alles andere ist abgedeckt
Hätten Sie Modell für die Tabellen wie:
Dann in Ihrer Spiel-Klasse:
Nun, dies wäre unter der Annahme, dass Spiel Plattform gehört der Spiele durch Spiel-Optionen.