Можно ли произвести node load с выбором подгружаемых полей?

Главные вкладки

Аватар пользователя Кришпер Кришпер 21 февраля 2018 в 20:58

Можно ли произвести node load с выбором подгружаемых полей(чтоб не все гроузились)? Может есть альтернативная ф-ция или типа того. Может такое в 8ке есть?

Комментарии

Аватар пользователя Semantics Semantics 21 февраля 2018 в 21:10

Ну, если очень захотеть, то можно даже свой node_load() написать с исключением ненужных хуков.
Но вы бы проблему свою описали, может есть иное решение

Аватар пользователя Кришпер Кришпер 21 февраля 2018 в 21:41

Проблемы нет, просто хочется использовать node_load для получения информации с конкретных полей, а не всё подряд тащить.

Аватар пользователя fairrandir fairrandir 21 февраля 2018 в 22:47

Если вы хотите грузить только определенные поля - делайте запрос в базу руками.

Другое дело - зачем. Загруженные ноды кладутся в кэш, и, ЕМНИП, и в пределах того же запроса не выбираются из базы заново.

Аватар пользователя Orion76 Orion76 22 февраля 2018 в 0:08

Согласен.
Какой смысл собирать при каждом обращении ноду по таблицам, если она "изменяется" как минимум один раз при создании, а максимум в любом случае на порядки раз меньше, чем количество ее загрузок из базы?

1.Запросил ноду из кэша,
если нет ее там,
запросил из базы, положил в кэш, пока нода не измениться.

2.Изменил ноду, почистил ее кэш.
При первом же запросе в кэш попадет ее актуальное состояние.(п.1)

И в итоге вместо сложного запроса к куче таблиц с кучей джойнов-кондишенов при каждом обращении к ноде - один запрос к одной таблице кэша по индексному полю.

Если я все правильно помню, даже при выключенном кэше семерка так и делает.

Так что не стесняйтесь, грузите ноду полностью node_load.
Ваш "велосипед" будет гораздо "тормознутее"..

Аватар пользователя Кришпер Кришпер 3 марта 2018 в 12:41

То бишь node load грузит все таблицы, а при последующем вызове типа ток подгружает новые значения? Ну это нарно всё равно процесс долгий.