Bolt\Legacy\Storage::getRelation PHP Method

getRelation() protected method

Get the relations for one or more units of content, return the array with the taxonomy attached.
protected getRelation ( array $content ) : array
$content array
return array $content
    protected function getRelation($content)
    {
        $tablename = $this->getTablename("relations");
        $ids = array_column($content, 'id');
        if (empty($ids)) {
            return;
        }
        // Get the contenttype from first $content
        $first = reset($content);
        $contenttype = isset($first->contenttype['key']) ? $first->contenttype['key'] : $first->contenttype['slug'];
        $query = sprintf("SELECT * FROM %s WHERE from_contenttype=? AND from_id IN (?) ORDER BY id", $tablename);
        $params = [$contenttype, $ids];
        $paramTypes = [\PDO::PARAM_STR, DoctrineConn::PARAM_INT_ARRAY];
        $rows = $this->app['db']->executeQuery($query, $params, $paramTypes)->fetchAll();
        foreach ($rows as $row) {
            $content[$row['from_id']]->setRelation($row['to_contenttype'], $row['to_id']);
        }
        // switch it, flip it and reverse it. wop wop wop.
        $query = sprintf("SELECT * FROM %s WHERE to_contenttype=? AND to_id IN (?) ORDER BY id", $tablename);
        $params = [$contenttype, $ids];
        $paramTypes = [\PDO::PARAM_STR, DoctrineConn::PARAM_INT_ARRAY];
        $rows = $this->app['db']->executeQuery($query, $params, $paramTypes)->fetchAll();
        foreach ($rows as $row) {
            $content[$row['to_id']]->setRelation($row['from_contenttype'], $row['from_id']);
        }
    }