Работа с объектами ORM

Вывести перевод для текущего языка элемента определённого поля можно так (если перевода нет, то вернет значения дефолтного языка)

$oInformationsystem_Item = Core_Entity::factory('Informationsystem_Item', 123);
echo $oInformationsystem_Item->multiLng('name'); // About

// для доп. свойства
$oProperty = Core_Entity::factory('Property', 123);
$aPropertyValues = $oProperty->getValues($shop_item_id);  
echo $aPropertyValues[0]->multiLng('value')

Получить все переводы всех полей для элемента в виде объектов

/* 
 * Получение маасива объектов, $bCache = TRUE
 * @param string $entity model name
 * @param int $entity_id
 * @param boolean $type FALSE|TRUE
 * @param boolean $bCache cache mode
 * @return array
 */
Core_Entity::factory('MultiLanguage_Field')->getAFields('shop_item', 123);

// Результат
//Array (
//	[0] => MultiLanguage_Field_Model Object
//	[1] => MultiLanguage_Field_Model Object
//)

/* 
 * Получение массива объектов с ключами полей
 */
Core_Entity::factory('MultiLanguage_Field')->getAFields('shop_item', 123, TRUE);

// Результат
//Array (
//	[name] => MultiLanguage_Field_Model Object
//	[description] => MultiLanguage_Field_Model Object
//)

/* 
 * Получение объекта по полю
 * @param string $entity model name
 * @param int $entity_id
 * @param string $field field name
 * @param boolean $bCache cache mode
 * @return self|NULL
 */
Core_Entity::factory('MultiLanguage_Field')->getByField('shop_item', 123, 'name');

Сохранение перевода для элемента

Сохранение происходит через параметр datalng_{lng}_{field}, где {lng} это код языка, а {field} имя поля элемента

$oInformationsystem_Item = Core_Entity::factory('Informationsystem_Item', 123);
$oInformationsystem_Item->datalng_en_name = 'My name';
$oInformationsystem_Item->save();

Last updated