Можно ли произвести node load с выбором подгружаемых полей(чтоб не все гроузились)? Может есть альтернативная ф-ция или типа того. Может такое в 8ке есть?
Согласен.
Какой смысл собирать при каждом обращении ноду по таблицам, если она "изменяется" как минимум один раз при создании, а максимум в любом случае на порядки раз меньше, чем количество ее загрузок из базы?
1.Запросил ноду из кэша,
если нет ее там,
запросил из базы, положил в кэш, пока нода не измениться.
2.Изменил ноду, почистил ее кэш.
При первом же запросе в кэш попадет ее актуальное состояние.(п.1)
И в итоге вместо сложного запроса к куче таблиц с кучей джойнов-кондишенов при каждом обращении к ноде - один запрос к одной таблице кэша по индексному полю.
Если я все правильно помню, даже при выключенном кэше семерка так и делает.
Так что не стесняйтесь, грузите ноду полностью node_load.
Ваш "велосипед" будет гораздо "тормознутее"..
Комментарии
Ну, если очень захотеть, то можно даже свой node_load() написать с исключением ненужных хуков.
Но вы бы проблему свою описали, может есть иное решение
Проблемы нет, просто хочется использовать node_load для получения информации с конкретных полей, а не всё подряд тащить.
Может, подойдет https://api.drupal.org/api/drupal/modules!field!field.attach.inc/functio...
Там вторым аргументом идёт список сущностей))
А вообще, ниже всё правильно сказали.
Да, например такая сущность
$nid = 5;
$entities = array($nid => (object)array('nid' => $nid, 'vid' => NULL, 'type' => 'car'));
Если вы хотите грузить только определенные поля - делайте запрос в базу руками.
Другое дело - зачем. Загруженные ноды кладутся в кэш, и, ЕМНИП, и в пределах того же запроса не выбираются из базы заново.
Согласен.
Какой смысл собирать при каждом обращении ноду по таблицам, если она "изменяется" как минимум один раз при создании, а максимум в любом случае на порядки раз меньше, чем количество ее загрузок из базы?
1.Запросил ноду из кэша,
если нет ее там,
запросил из базы, положил в кэш, пока нода не измениться.
2.Изменил ноду, почистил ее кэш.
При первом же запросе в кэш попадет ее актуальное состояние.(п.1)
И в итоге вместо сложного запроса к куче таблиц с кучей джойнов-кондишенов при каждом обращении к ноде - один запрос к одной таблице кэша по индексному полю.
Если я все правильно помню, даже при выключенном кэше семерка так и делает.
Так что не стесняйтесь, грузите ноду полностью node_load.
Ваш "велосипед" будет гораздо "тормознутее"..
Вот еще статья - https://timonweb.com/posts/loading-only-one-field-from-an-entity-or-node...
То бишь node load грузит все таблицы, а при последующем вызове типа ток подгружает новые значения? Ну это нарно всё равно процесс долгий.