Разница между newQuery, command('update'), set и getOblect, set
Наткнулся на такую конструкцию:
$c = $modx->newQuery('Objekt');
$c->command('update');
$c->set(array(
'name' => $name
));
$c->where(array(
'id' => $id,
));
$c->prepare();
$c->stmt->execute();
Раньше всегда использовал $obj = $modx->getObject('Object');
$obj->set('prop', 'value');
$obj->save();
Подскажите, в чём разница? Предполагаю, что в скорости. Можно ли первым способом создавать ресурсы? Комментарии: 2
я глубоко не копался, но поделюсь своим пониманием. newQuery формирует чистый sql запрос, а newObject использует для работы с базой данных объектную модель. Оба способа позволяют создавать ресурсы, но стоит иметь в виду, что создание ресурса это не просто добавление новой записи в БД, а ещё ряд действий, например, генерация псевдонима, url.
newQuery это конструктор SQL запросов. Он сам по себе в базу не ходит.
Запрос в базу делает строка
Разница в приведении к типу данных.
Перед сохранением обязательно происходит конвертация в указанный в карте объекта тип.
Строки, числа и булевы значения это все понятно.
В дело вступают алгоритмы посложнее когда, тип данных дата. json и другие.
Тот же процесс происходит и в обратную сторону.
Обычный SQL всегда вернет только строки. А вот такой код приведет все данные к нужному типу данных.
Запрос в базу делает строка
$c->stmt->execute();
Вот ее нужно сравнивать с get и setРазница в приведении к типу данных.
Перед сохранением обязательно происходит конвертация в указанный в карте объекта тип.
Строки, числа и булевы значения это все понятно.
В дело вступают алгоритмы посложнее когда, тип данных дата. json и другие.
Тот же процесс происходит и в обратную сторону.
Обычный SQL всегда вернет только строки. А вот такой код приведет все данные к нужному типу данных.
$obj->get()
К примеру json массив будет аккуратненько распарсен в массив, число приведено к числу, метка времени превратится в читаемую дату и так далее.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.