Beispiel #1
0
 /**
  * Recursively adds a the links to the query.
  *
  * @param AnDomainQuery $query Query object
  * @param array 
  */
 protected function _links($query, $links)
 {
     settype($links, 'array');
     foreach ($links as $link) {
         $resource = $link['resource'];
         $description = $link['query']->getRepository()->getDescription();
         $conditions = array();
         foreach ($link['conditions'] as $key => $value) {
             if (is_numeric($key)) {
                 $conditions[] = $value;
             } elseif ($value instanceof AnDomainResourceColumn) {
                 $conditions[] = $key . ' = ' . (string) $value;
             } else {
                 $conditions[] = $key . ' = ' . $this->_store->quoteValue($value);
             }
         }
         if ($link['bind_type']) {
             $type = $this->_inheritanceTree($description);
             if (!empty($type) && $type != '%') {
                 $conditions[] = $link['bind_type'] . ' LIKE \'' . $this->_inheritanceTree($description) . '\'';
             }
         }
         $name = $this->_store->quoteName($link['resource_name']);
         $type = strtoupper($link['type']);
         switch ($type) {
             case 'STRONG':
                 $type = 'INNER';
                 break;
             case 'WEAK':
                 $type = 'LEFT';
                 break;
         }
         //$name    = $this->_store->quoteName($resource->getName());
         $query->join($type, $resource->getName() . ' AS ' . $name, $conditions);
         $this->_links($query, $link->query->link);
     }
 }