Вы можете передать значение 'totalItemCount'
в конструктор CActiveDataProvider , который вы передали как null
в своем текущем коде
Поставщик данных будет выполнять только запрос подсчета если его 'totalItemCount'
равно null
Вы можете с удовольствием вычислить или извлечь из кеша результат подсчета самостоятельно, основываясь на критериях $searchForm->search()
, и передать его в
в секунду опция заключается в том, чтобы создать собственное расширение CActiveDataProvider, переопределить calculateTotalItemCount()
и предоставить опцию кэширования для результата подсчета, когда он в данный момент выполняет запрос count()
Если Вы ловите исключение и затем хотите повторно бросить его, этот шаблон довольно прост:
try:
do_something_dangerous()
except:
do_something_to_apologize()
raise
Конечно, если Вы хотите повысить исключение во-первых, это легко, также:
def do_something_dangerous(self):
raise Exception("Boo!")
Если это не то, что Вы хотели, предоставьте больше информации!
Само исключение завершит функцию:
def f():
a = 1 / 0 # will raise an exception
return a
try:
f()
except:
print 'no longer in f()'
Не может думать о другом способе "выйти" из функции кроме a) возврата, b) выдают исключение, или c) оконечного осуществления программы.
Принятие Вас хочет "остановить" выполнение в том методе. Существует несколько вещей, которые можно сделать.
Как другие указали, исключение вытащит Вас из метода. Вы не должны стыдиться или не смущены исключениями; исключение указывает на ошибку, но это - не обязательно то же как ошибка.
Например, скажите, что я пишу функцию факториала. Факториал не определяется для отрицательных чисел, таким образом, я мог бы сделать это:
def factorial(n):
if n < 0:
raise ValueError
if n == 0:
return 1
return n*factorial(n-1)
Я затем искал бы исключение:
n = raw_input('Enter a number.')
try:
print factorial(n)
except ValueError:
print 'You entered a negative number.'
Я могу сделать исключение более информативным, чем ValueError путем определения моего собственного:
class NegativeInputError(Exception):
pass
# in the function:
if n < 0:
raise NegativeInputError
HTH!