I have two types of object:
Level can have exactly one parent
Level (or none, if it's the first level). But
Levels can have multiple children. This creates a sort of hierarchy/family tree type structure that can change as new
Levels are added. This is achieved on
Level with a
belongsTo relationship) method and a
hasMany() relationship) method.
Game objects specify a specific path of
Levels, from first parent (where its parent is
null) right down to a specific sub-
Level, however far down the hierarchy. The way I have set this up is by giving
belongsTo() relationship) method, pointing at said specific sub-
Level. The idea then would be to recurse up until there are no more parents, when a whole
Game had to be loaded. On the
Level side, there is currently a
hasMany() relationship) method. However, this only returns the
Game when the
Level in question is the final one.
I've hit the point now where I want to figure out what
Games any given
Level belongs to, but anywhere in the hierarchy, not just the final
Level. Is there a way I can alter the
games() method so that it can recurse through a
Levels children to see if it can find any more
Games and return that
hasMany() relationship instead?
Or, is there a better pattern I should use for this?
I'm happy to do a bit of restructuring for the sake of cleaner code. I did consider adding a many-to-many relationship where
Levels would have a relationship to both their parent and the
Game, then somehow figure out the ordering of
Levels when loading them from the
Game object, but I'm not sure if that would be overkill?
Any advice would be greatly received, thanks!