/** * Hack to get polymorphic hasManyThrough * * $resourceClass = path to Eloquent model * $resourceableName = the resource's polymorphic name "photoable" * $relationship = the resource's middle relationship "photos" */ public function hasManyThroughable($resourceClass, $resourceableName, $relationship) { $resourceables = $this->$relationship->filter(function ($resourceable) use ($resourceableName, $resourceClass) { $resourceable_type = $resourceableName . '_type'; return $resourceable->$resourceable_type == $resourceClass; }); $resources = $resourceables->map(function ($resourceable) use ($resourceableName, $resourceClass) { $resourceable_id = $resourceableName . '_id'; return $resourceClass::find($resourceable->$resourceable_id); }); return $resources; }