Установка полей объекта
Последнее обновление Jan 27th, 2020 | История страницы | Улучшить эту страницу | Сообщить о проблеме
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$306 per month—let's make that $500!
Learn moreОдиночные объекты¶
Получив объект, вы можете изменить значения записи, установив поля.
Установка полей только изменяет значения в объекте и временно удерживает их в памяти, пока вы не сохраните объект навсегда в базе данных.
Установка может быть выполнена несколькими способами.
set¶
Основной способ - через метод set:
$myBox->set('width',10);
$myBox->set('height',4);
set()
также принимает третий параметр $vType
, который является либо строкой, указывающей формат предоставленного значения, либо вызываемой функцией, которую следует использовать для установки значения поля, переопределяя поведение по умолчанию. Например:
/* Установите дату как целое число метки времени Unix, а не строковую дату */
$myBox->set('birthday',432432543,'integer');
/* Установите размер окна на основе ширины и высоты с помощью пользовательской функции */
function setDim($k,$v,&$obj) {
$w = $obj->get('width');
$h = $obj->get('height');
$dim = $w * $h;
$obj->set($k,$dim);
}
$myBox->set('dimension','','setDim');
fromArray¶
Другой способ, которым Объекты могут быть установлены в xPDO через метод fromArray()
:
$myBox->fromArray(array(
'width' => 5,
'height' => 10,
));
xPDOObject::fromArray
имеет всего 5 параметров. Мы видели первый в использовании. Вторым является $keyPrefix
, который после установки удалит переданное значение из массива, который вы передаете в первом параметре. Хорошим примером этого является передача переменных $_POST
в Object:
// Скажем так:
// $_POST = array(
// 'test_w' => 12,
// 'test_h' => 13,
// );
$myBox->fromArray($_POST,'test_');
echo $myBox->get('w'); // prints '12'
Третий параметр, $setPrimaryKeys
, является логическим значением, по умолчанию равным false
. Когда установлено, это позволит Первичным Ключам в объекте быть установленным. Это полезно для создания новых объектов, для которых вы хотите указать идентификатор:
$myBox = $xpdo->newObject('Box');
$myBox->fromArray(array(
'id' => 23,
'width' => 5,
'height' => 5,
),'',true);
echo $myBox->get('id'); // prints '23'
Четвертый параметр, $rawValues
, по умолчанию имеет значение false
. Если true
, объект установит свои значения без внутреннего вызова set()
. Что это значит? Ну, это означает, что проверка типа поля не произойдет; и при этом это поле не будет установлено как «грязное».
Пятый параметр, $adhocValues
, при значении true автоматически устанавливает любые переданные значения как переменные объекта, независимо от того, являются ли они полями в объекте. Например:
$myBox->fromArray(array(
'width' 5',
'notRealField' => 'boo',
),'',false,false,true);
Последнее поле может быть переопределено путем передачи xPDO::OPT_HYDRATE_ADHOC_FIELDS
какtrue
в конфигурацию xPDO. Если это значение true
, 5-й параметр всегда будет true
.
save¶
Эта функция позволяет вам постоянно сохранять установленные поля в базе данных.
$myBox->save();
Это немедленно выполнит запрос UPDATE
(илиCREATE
), который сохранит запись в базе данных.
Many objects at once¶
public function updateCollection($className, array $set, $criteria= null) {
Для пакетных обновлений вы можете использовать xPDO->updateCollection($className, $setValues, $critera)
.
Параметры:
-
$className
: название модели для обновления -
$setValues
: массив с ключамиkey => value
для установки -
$criteria
: экземпляр или массивxPDOCritera
, представляющий условие, для которого необходимо обновить коллекции.
Пример:
$modx->updateCollection('modResource', ['published' => true], ['published' => false]);
Количество обновленных строк будет возвращено этим методом.
Будьте осторожны с этим методом, поскольку непредоставление (правильных) критериев может повлиять на множество строк.
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$306 per month—let's make that $500!
Learn more