@classmethod
def find(cls, id, columns=None):
    """
        Find a model by its primary key.

        :param id: The id of the model
        :type id: mixed

        :param columns: The columns to retrieve
        :type columns: list

        :return: Either a Model instance or a Collection
        :rtype: Model
        """
    instance = cls()
    if isinstance(id, list) and not id:
        return instance.new_collection()
    if columns is None:
        columns = ['*']
    return instance.new_query().find(id, columns)
