- PVSM.RU - https://www.pvsm.ru -
Не смотря на то, что модуль с поддержкой ORM разработчики битрикса анонсировали ещё в конце прошлого года, и того, что этот модуль заявлен в списке доступных в практически всех редакциях, реально его пока что нет в комплекте, как нет по нему и документации. Оставим за кадром неэтичность включения отсутствующих фич в описание продукта в разделе покупки, вернемся к ORM. Раз его нет — почему бы не реализовать нечто подобное самостоятельно?
Для нетерпеливых — сразу дам ссылку на исходники модуля, на GitHub'е. [1] Это как-бы прототип — потому что имеет некоторые проблемы, да и не все моменты решены красиво, но тем не менее, он уже работает. Так что всё-таки наш продукт. Хоть и прототип. На написание кода ушло менее 4х часов, со всеми вытекающими.
$item=new ORM(5); //создаем объект инфоблока с номером 5
$item=ORM::Factory(5); //аналогично
$item=new ORM("news"); //создаем объект инфоблока с CODE=news
$item=ORM::Factory("news"); //сначала будет попытка создать объект класса newsBitrixOrm или NewsBitrixOrm, если таковой не будет найдет - попытка создать объект инфоблока с CODE=news
class NewsBitrixORM extends ORM{
protected $IBlockID=1;
protected $auto_getters = array("NAME"=>"GetNameValue");
protected $auto_setters = array("NAME"=>"SetNameValue");
public function GetNameValue($value){
return str_replace(" (имя новости!)", "", $this->_data["NAME"]);
}
public function SetNameValue($value){
$this->_data["NAME"]=$value." (имя новости!)";
$this->_changed_fields["NAME"]="NAME";
return true;
}
}
$ormNews = ORM::Factory(4);
$list=$ormNews->Where("WIDTH","=","140")->FindAll();
foreach ($list as $_news){
$_news->NAME="Новость с номером {$_news->ID}";
$_news->WIDTH=24;
echo "<pre>".print_r($_news->AsArray(true),true)."</pre>";
if ($_news->ID%2==0) $_news->Delete(); else {
$_news->NAME.=" [обновлена!]";
$_news->Save();
}
}
COLOR
. При работе с ним будет видно два поля — COLOR
, содержащее текстовое значение выбранного элемента списка, и COLOR__ID
(два подчеркивания), содержащее ID выбранного варианта. Для изменения значения нужно назначить ему ID другого варианта списка (например $item->ID=5
), при этом автоматически COLOR__ID
получит это значение, а COLOR
— изменит текстовое значение. Автор: Newbilius
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/31450
Ссылки в тексте:
[1] ссылку на исходники модуля, на GitHub'е.: https://github.com/Newbilius/bitrix.orm
[2] Источник: http://habrahabr.ru/post/175705/
Нажмите здесь для печати.