Я использую обратный вызов cakePHP 2.0 afterFind() для выполнения вычислений значений базы данных до их отображения.cakePHP afterFind и значения ассоциации
У меня есть три модели - материалы, продукты и котировки.
Каждый продукт имеет материал и расчеты выполняются в обратном вызове afterFind продукта, используя эту ассоциацию, в частности, с линией:
$results[$key]['Product']['material_cost'] = $results[$key]['Product']['material_mass'] * $val['Material']['cost'];
с $val['Material']['cost']
со ссылкой на соответствующий материал.
Все в порядке.
Далее У меня есть обратный вызов afterFind() в моей модели Quote. Цитата связана с продуктом, и расчеты в модели кавычек зависят от расчетов в модели продукта, в частности, той, которая ссылается на материал.
Я могу сослаться на модель продукта afterfind результаты в цитате модели afterFind просто отлично, как: $val['Product']['number_tools']
Однако теперь модель продукта не может найти соответствующий материал, и я получаю сообщение об ошибке: Undefined индекс: Материал [APP /Model/Product.php, строка 126].
на линии 126 product.php является
$val['Material']['cost']
Как я могу обойти эту проблему, это сводит меня с ума!
вообще, как правило, всегда хорошая идея, чтобы вычислить, что материал «по требованию» - незадолго до того, фактически выводя его , основное преимущество заключается в том, что эти вычисления не будут выполняться, если они не нужны, например. если происходит переадресация или если в представлении отображается только заголовок и т. д. – mark
вычисления требуют больше или меньше всякий раз, когда запрашивается база данных, поэтому обратный вызов afterFind выполняет именно то, что я хочу, и выполняет вычисления «на лету», прежде чем данные будут отправлены в представление. - Плюс это позволяет мне сохранять всю логику в модели. – Ralphonz