Новости 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 Гость просматривают эту тему.
  • 5 Ответов
  • 702 Просмотров
*

Den JW

  • Осваиваюсь на форуме
  • 26
  • 2 / 0
Добрый день!
Столкнулся с такой проблемкой...
Появилась необходимость создания большого количества пунктов меню, и, само собой, решил ее реализовать ч/з SQL запросы.
Но при добавлении пунктов послетали все привязки и сортировка. Проблемой явились поля lft rgt.  С самим явлением lft rgt разобрался, но появилось еще больше вопросов, т.к. добавляя один пункт, я должен менять сразу несколько других...
Если кто-то с подобным сталкивался, помогите разобраться. 
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
*

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
Re: Создание пункта меню через БД
« Ответ #2 : 18.03.2020, 20:43:01 »
Цитировать
С самим явлением lft rgt разобрался
точно!?
lft rgt - что за зверь поля?
Роберту СПС, до сих пор не могу осмыслить(Оправдание - Нет времени! :) )
! А ежли к вашему решению с lft rgt сверх компонент не дурной дабавим?
Прошу поделиться опытом с lft rgt! (+1 в lft и +1 в rgt от lft : - не решение!)
*

sivers

  • Живу я здесь
  • 2587
  • 359 / 0
Re: Создание пункта меню через БД
« Ответ #3 : 18.03.2020, 21:51:26 »
Прошу поделиться опытом с lft rgt! (+1 в lft и +1 в rgt от lft : - не решение!)
Это порядок сортировки в древовидных структурах. Разность между rgt и lft (между правым и левым) показывает сколько элементов внутри (т.е. сколько дочерних). Рассчитать их можно, если построить все дерево, а потом пробежаться по нему рекурсивно. А смысл их в том, что когда уже рассчитаны, то можно выстраивать отсортированные элементы без необходимости строить все дерево предварительно.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
Re: Создание пункта меню через БД
« Ответ #4 : 18.03.2020, 22:07:53 »
Цитировать
sivers
В чем фича перед оптимизированным! запросом в базУ!
По простому если можно :)
*

sivers

  • Живу я здесь
  • 2587
  • 359 / 0
Re: Создание пункта меню через БД
« Ответ #5 : 18.03.2020, 22:28:30 »
По простому если можно
Например, есть у вас большое древовидное меню (а то и несколько). Вы из параметров страницы получаете ИД текущего пункта меню. Допустим это 184. И вам надо вытащить из базы все дочерние подпункты (и их подпункты - у нас же дерево) этого вот пункта меню. Как это сделать?
Вы читаете сначала запись этого пункта из БД. Там есть parent_id. В принципе, этого отношения к родителю достаточно, чтоб построить все дерево меню и потом из него "выкусить" ваш пункт с его дочками. Но это же нерационально как-то. А в lft-rgt подходе достаточно выполнить запрос вида
Код
WHERE `lft` > $itemLft AND `rgt` < $itemRgt
где $ItemLft и $itemRgt - это lft и rgt вашего 184-го пункта меню соответственно.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вставка видео со своего сервера через media manager

Автор goga_pgasovav

Ответов: 2
Просмотров: 946
Последний ответ 27.03.2025, 14:51:43
от Akeksandr
Joomla! 3.9.21 Невозможно создать пункт меню

Автор edvalitto

Ответов: 1
Просмотров: 590
Последний ответ 26.03.2025, 19:26:30
от azm1n
Разные меню для мобильной и для ПК версии сайта

Автор jimka

Ответов: 7
Просмотров: 1054
Последний ответ 24.03.2025, 20:03:01
от R31rus
Проблема с меню

Автор denis_4

Ответов: 6
Просмотров: 1151
Последний ответ 07.08.2024, 14:00:43
от denis_4
Непонятная проблема с меню

Автор THE KILLERS

Ответов: 2
Просмотров: 6888
Последний ответ 25.07.2024, 16:07:39
от THE KILLERS