2011-01-31 2 views
1

Итак, я писал функциональность, где я получал идентификаторы родительской категории категории и хотел получить url_key одного из родителей в Magento. Я хотел сделать это без загрузки категории и нашел этот метод getAttributeRawValue, который можно найти здесь /app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Abstract.php. В принципе, нет необходимости загружать целый объект, чтобы просто получить значение атрибута, связанное с этим идентификатором объекта.Загрузка значения атрибута без загрузки всего объекта

Он получает меня, что мне нужно, но мне интересно, все ли это намного лучше, чем загрузка категории и получение атрибута. Является ли загрузка категории по существу тем же самым, но выполняет ее для каждого атрибута?

+0

Можете ли вы опубликовать полный фрагмент кода, чтобы мы могли видеть контекст для вызова? –

+0

Не загружайте необработанное значение, чтобы избежать каких-либо переопределений? Сначала есть метод '_afterLoad' модели модели категории, а затем, возможно, пользовательский getter. Я даже не проверял связанные события. Эти поведения могут быть изменены сторонними расширениями без вашего ведома. Я считаю, что правильное действие будет заключаться в использовании полного модельного подхода, а затем кэширования ваших результатов. – clockworkgeek

+0

, но если его просто получить url_key или подобное название категории, это действительно не имеет значения ни в одном типе переопределений? Я имею в виду, url_key - url_key. все, что я использую для того, чтобы поместить его в тег body для имени класса. –

ответ

3

Моя первая мысль - использовать встроенный Varien Profiler для количественного анализа. Это недоиспользуемый очень полезный трюк.

В принципе, вам необходимо включить профилирование в Admin (System> Config> Advanced> Developer> Debug> Profiler), а затем вставить инструкции start/stop с уникальной строкой с любой стороны кода, который вы хотите профилировать , например

Varien_Profiler::start('__CATEGORY_URL_KEY_RETURN__'); 
.... 
your code here 
.... 
Varien_Profiler::stop('__CATEGORY_URL_KEY_RETURN__'); 

Загрузите страницу в своем браузере, и вы увидите выход Profiler у основания.

Наслаждайтесь!

+0

приятно спасибо, я продолжаю забывать использовать это чаще всего –

+0

Вау, это впечатляющая разница ... –

Смежные вопросы