示例#1
0
 /**
  * [$field, $lookupType, $column]
  * @param string $lookup
  * @return array
  * @throws \Exception
  */
 protected function explainLookup($lookup)
 {
     $lookupArr = explode('__', $lookup);
     $lookupType = end($lookupArr);
     if ($this->lookuper->issetLookup($lookupType)) {
         $lookupType = array_pop($lookupArr);
     } else {
         $lookupType = 'exact';
     }
     $lookup = implode('__', $lookupArr);
     $field = $this->metadata->findField($lookup);
     if ($this->metadata->hasFieldObj($field)) {
         return [$field, $lookupType, 't.' . $field->db_column];
     } else {
         if (!isset($this->relatedSelectCols[$lookup])) {
             throw new \DomainException("Cant lookup for related field '{$lookup}' without selectRelated()");
         }
         return [$field, $lookupType, $this->relatedSelectCols[$lookup]];
     }
 }