framework/db/BaseActiveRecord.php
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;
    }
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;
    }
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 ; }
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.
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 .