Новости Joomla

Совет по Joomla: $db->getQuery(true) стал устаревшим

Совет по Joomla: $db->getQuery(true) стал устаревшим

👩‍💻 Совет по Joomla: $db->getQuery(true) стал устаревшим.Раньше при создании запросов в базу данных мы всегда получали объект запроса с помощью метода

getQuery(). Если передавался параметр
$new =
true, то получали новый запрос. Если без - последний.

use Joomla\CMS\Factory;$db = Factory::getContainer()->get('DatabaseDriver');$query = $db->getQuery(new: true);// и строим запрос
Под капот Joomla 4 вошёл Joomla Framework (PHP фреймворк а-ля Laravel, Yii и т.д.), а для Joomla 5 он обновился - версия 3.4.1 вышла 6 октября 2023г. В методе фреймворка есть примечание о том, что параметр
$new, который передавался в метод
getQuery() помечен как устаревший и будет удалён в версии фреймворка 4.0.
The parameter $new is deprecated and will be removed in 4.0, use %s::createQuery() instead.В Joomla 4 версия Joomla Framework была 2.x., в Joomla 5 - 3.x. Поэтому есть предположение, что с выходом Joomla 6 обновится и версия фреймворка - станет 4.0. Поэтому для получения объекта для новых запросов следует использовать метод
createQuery(). Он уже представлен в ядре и широко используется. При этом метод
getQuery() останется, но, скорее всего, будет выполнять функцию только геттера - получения текущего запроса.
@joomlafeed#joomla #php #разработка

0 Пользователей и 1 Гость просматривают эту тему.
  • 1 Ответов
  • 712 Просмотров
*

kysin

  • Захожу иногда
  • 247
  • 4 / 0
J4
Доброго дня!

Создаю материал с помощью скрипта php. Код ниже:
Код
$newapp = JFactory::getApplication();
$mvcFactory = $newapp->bootComponent('com_content')->getMVCFactory();
$articleModel = $mvcFactory->createModel('Article', 'Administrator', ['ignore_request' => true]);
$title_article = 'My Article title';
$article = [
    'catid' => 2,
    'title' => $title_article,
    'introtext' => 'My Article Intro Text',
    'fulltext' => 'My Article Full Text',
    'state' => 1,
    'language' => '*',
];

if (!$articleModel->save($article)){
    throw new Exception($articleModel->getError());
}


Погуглил, но не смог найти решение, как вместе с материалом заполнять дополнительные поля. С помощью SQL не вариант, т.к. не известно id создаваемого материала.

Может, кто знает рабочий вариант?

Заранее спасибо!
*

kysin

  • Захожу иногда
  • 247
  • 4 / 0
Ответ подсказали на stackexchange.com:
Код
$article = [
    'title' => 'article title',
    'catid' => '2',
    'com_fields' => [
        'field-name' => 'field value',
    ],
    ...
];

if (!$articleModel->save($article)){
    throw new Exception($articleModel->getError());
}
При этом, нужно обязательно быть залогиненым как админ. Или под другим аккаунтом, позволяющм редактировать поля.
У меня работает.
« Последнее редактирование: 10.09.2023, 19:59:31 от kysin »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Получение объектов из материала(статьи) по ее id

Автор muzzy76

Ответов: 2
Просмотров: 137
Последний ответ 05.07.2025, 10:33:26
от muzzy76
Количество просмотров материала. Реально ли оно?

Автор kysin

Ответов: 3
Просмотров: 502
Последний ответ 21.05.2025, 12:17:07
от wishlight
Проблема со страницей 404 и каноническим url материала

Автор azm1n

Ответов: 0
Просмотров: 389
Последний ответ 14.05.2025, 01:17:17
от azm1n
Как сдвинуть заголовок материала в центр в шаблоне cassiopeia для joomla 5

Автор TerminatorTM

Ответов: 2
Просмотров: 664
Последний ответ 09.03.2025, 08:24:09
от fbr
[Решено] Вывод значений из custom fields материала в блоге категории без getDbo

Автор goga_pgasovav

Ответов: 4
Просмотров: 876
Последний ответ 05.03.2025, 14:36:13
от goga_pgasovav