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:
Diese Methode des Instanz Models beschert mir auch schon eine nahezu richtige Query:
Die Query sollte allerdings so aussehen:
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
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"); }
Code:
select * from `modules` inner join `modules_assigned` on `modules_assigned`.`id` = `modules`.`id` where `modules_assigned`.`instanz_id` = ?;
Code:
select * from `modules` inner join `modules_assigned` on `modules_assigned`.`module_id` = `modules`.`id` where `modules_assigned`.`instanz_id` = ?;
Ich hoffe Ihr könnt mir helfen, mglw. stehe ich ja momentan auch nur auf dem Schlauch
Kommentar