def first_or_fail(self, columns=None):
        """
        Execute the query and get the first result or raise an exception.

        :type columns: list

        :raises: ModelNotFound
        """
        model = self.first(columns)
        if model is not None:
            return model

        raise ModelNotFound(self._parent.__class__)
Execute the query and get the first result or raise an exception.

        :type columns: list

        :raises: ModelNotFound