Ankündigung

Einklappen
Keine Ankündigung bisher.

Laravel Eloquent Table Mapping

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Laravel] Laravel Eloquent Table Mapping

    Servus,

    ich habe momentan ein kleines Problem und zwar baue ich zurzeit eine Applikation die in verschiedenen Instanzen verschiedene Module aktiviert haben muss. (Ich habe erst vor sehr kurzer Zeit damit angefangen, mich mit Laravel per se auseinanderzusetzen)

    Das Datenbankschema sieht hierbei wie folgt aus:
    Instanzen
    -- ID (unique)
    -- (Sonstige, für dieses Problem irrelevante Spalten)

    Modules
    -- ID (unique)
    -- (Sonstige, für dieses Problem irrelevante Spalten)

    Modules_assigned
    -- ID (unique)
    -- module_id
    -- intanz_id

    Hierzu gibt es jeweils auch drei angelegte Models. Ziel ist es direkt aus dem Instanz Model alle zugehörigen Module abzufragen.
    Momentan hätte ich das über hasManyThrough gelöst:


    PHP-Code:
    public function module() {      return $this->hasManyThrough('App\Http\Controllers\Instanz\Modules\Module''App\Http\Controllers\Instanz\Modules\ModuleMapper'"instanz_id""id""module_id"); } 
    Diese Methode des Instanz Models beschert mir auch schon eine nahezu richtige Query:
    Code:
    select * from `modules` inner join `modules_assigned` on `modules_assigned`.`id` = `modules`.`id` where `modules_assigned`.`instanz_id` = ?;
    Die Query sollte allerdings so aussehen:
    Code:
    select * from `modules` inner join `modules_assigned` on `modules_assigned`.`module_id` = `modules`.`id` where `modules_assigned`.`instanz_id` = ?;
    Hier ist also nun meine Frage, ich habe keine Möglichkeit gefunden über hasManyThrough den differrierenden Spaltennamen zu spezifizieren... wie könnte ich das am besten umsetzen?

    Ich hoffe Ihr könnt mir helfen, mglw. stehe ich ja momentan auch nur auf dem Schlauch

  • #2
    Leider hat Eloquent einige sehr nervige Beschränkungen - eventuell hast du eine gefunden.

    Kommentar


    • #3
      Ich kenne eloquent nu gar nicht, rage mich aber wieso du fünf argumente hast:
      If you would like to manually specify the keys of the relationship, you may pass them as the third and fourth arguments to the method
      zudem scheint mir das polymorphic besser:
      Zitat von http://laravel.com/docs/4.2/eloquent
      The "has many through" relation provides a convenient short-cut for accessing distant relations via an intermediate relation.
      (..)
      Polymorphic relations allow a model to belong to more than one other model, on a single association.

      Kommentar


      • #4
        monolith
        moma Ups, ja ursprünglich hatte ich vier Argumente spezifiziert und habe dann -zunächst- ohne in die docs zu schauen by doing geschaut ob ein fünfter Parameter ggf. noch weitere Konfigurationsmöglichkeiten bietet. Den habe ich hier aus versehen übernommen

        Kommentar


        • #5
          [MOD: Verschoben von PHP - Fortgeschrittene]
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar

          Lädt...
          X