public function getCacheName($associations = false)
    {
        $values = $this->cache ?: null;

        if ($associations) {
            $values = [$values];
            foreach ($this->associations()->getIterator() as $association) {
                if (method_exists($association->getTarget(), 'getCacheName') && $association->getTarget()->getCacheName()) {
                    $values[] = $association->getTarget()->getCacheName();
                }
            }

            $values = array_values(array_unique(array_filter($values)));
        }

        return $values;
    }