code: public function getRelation($name, $throwException = true)
      {
          $getter = 'get' . $name;
          try {
              // the relation could be defined in a behavior
              $relation = $this->$getter();
          } catch (UnknownMethodException $e) {
              if ($throwException) {
                  throw new InvalidArgumentException(get_class($this) . ' has no relation named "' . $name . '".', 0, $e);
              }
  
              return null;
          }
          if (!$relation instanceof ActiveQueryInterface) {
              if ($throwException) {
                  throw new InvalidArgumentException(get_class($this) . ' has no relation named "' . $name . '".');
              }
  
              return null;
          }
  
          if (method_exists($this, $getter)) {
              // relation name is case sensitive, trying to validate it when the relation is defined within this class
              $method = new \ReflectionMethod($this, $getter);
              $realName = lcfirst(substr($method->getName(), 3));
              if ($realName !== $name) {
                  if ($throwException) {
                      throw new InvalidArgumentException('Relation names are case sensitive. ' . get_class($this) . " has a relation named \"$realName\" instead of \"$name\".");
                  }
  
                  return null;
              }
          }
  
          return $relation;
      }
docs: Returns the relation object with the specified name.
  A relation is defined by a getter method which returns an [[ActiveQueryInterface]] object.
  It can be declared in either the Active Record class itself or one of its behaviors.
  @param string $name the relation name, e.g. `orders` for a relation defined via `getOrders()` method (case-sensitive).
  @param bool $throwException whether to throw exception if the relation does not exist.
  @return ActiveQueryInterface|ActiveQuery the relational query object. If the relation does not exist
  and `$throwException` is `false`, `null` will be returned.
  @throws InvalidArgumentException if the named relation does not exist.