protected function loadForeign($column, $value)
    {
        static::checkUnknownColumn($column);

        if (!array_key_exists($column, static::FOREIGN_KEYS)) {
            throw new NotForeignColumnException(static::class, $column);
        }

        $foreign_map = static::FOREIGN_KEYS[$column];

        if ($value === null) {
            unset($this->foreign[$column]);
            return;
        }
        $foreign = ModelManager::getInstance(
            $foreign_map[0],
            [$foreign_map[1] => $value]
        );

        if ($foreign) {
            $this->foreign[$column] = $foreign;
        } else {
            throw new ForeignConstraintException(static::class, $column);
        }
    }