Новости Joomla

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

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
всем здра!
опять туплю с мускулем.
нужно одним запросом получить данные доп полей + значения из таблицы com_content.
доп.поля тягаются так
Код
		$db = JFactory::getDBO();
$query = '
select *
from #__fields_values
where item_id IN ('.$params.')
';
$db->setQuery($query);
вопрос, как дописать, чтобы забирало ещё id, заголовок, категорию, и вводнуое изображение статей из com_content по такому же условию $params?
в $params передаются id-шники статей через запятую.
спасибо.

*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Код: sql
SELECT fv.value, c.id, c.title, c.images FROM #__fields_values as fv LEFT JOIN #__content as c ON c.id = fv.item_id WHERE fv.item_id IN($params)
Возможно будут ошибки, но суть запроса остается...
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
спасибо, но легче не стало  ;D
нужен рабочий код, потому что я не понимаю, что тут происходит и поправить не могу.
гуманитарная планка не движется дальше простых селектов  ;D
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Код: php
$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query->select('fv.*, c1.id, c1.title, c1.catid, c2.title as cat_title')
->select('c1.images->>"$.image_intro" as image_intro')
->from('#__fields_values as fv')
->leftJoin('#__content as c1 ON c1.id = fv.item_id')
->leftJoin('#__categories as c2 ON c2.id = c1.catid')
->where('fv.item_id IN(' . $params . ')');

$db->setQuery($query);
« Последнее редактирование: 20.09.2020, 16:35:20 от NewUsers »
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
нужен рабочий код
NewUsers привел рабочий код. только категорию добавить забыл
Код
$query = '
SELECT fv.value, c.id, c.catid, c.title, c.images
FROM #__fields_values as fv
LEFT JOIN #__content as c ON c.id = fv.item_id
WHERE fv.item_id IN ('.$params.')
';
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
чет я не уверен в правильности собственного вопроса уже ))).
на выходе кака какая-то получается, не понятно, как её парсить.
по ходу, проще 2 запроса делать все же. сначала надо понять, как правильно получить доп. поля с группировкой по ид статьи.
а ещё не понятно, почему у вас первый запрос обращается не к com_content а в доп. поля, хотя поля из его таблицы вроде...
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
а ещё не понятно, почему у вас первый запрос обращается не к com_content а в доп. поля, хотя поля из его таблицы вроде...
Так там связка из 2 таблиц идет (LEFT JOIN), записи приводятся в соответствие по полю ИД материала, которое присутствует в обеих таблицах (ON c.id = fv.item_id), соответственно, в селекте можно указывать поля из обеих таблиц. Записи, для которых соответствия ИДов не найдено - в выборку не попадают.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
спасибо, попробую по-позже разобраться, но шансов мало  ;D

откатился к изначальному запросу - в шапке. сейчас затык с группировкой данных доп. полей. по юзеру.
если сделать
Код
$rows = $db->loadObjectList();
, то будут все нужные поля
а если
Код
$rows = $db->loadAssocList('item_id');
то получим 2 массива (2 юзера), но внутри массива останется только одно поле.
видимо, этот момент не победить и надо тупо самому собирать массивы по юзерам и их полям?

*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
но вот при попытке вытащить данные красиво они почему-то пропадают. Т.е. вместо нескольких параметров внутри массива или объекта с ид статьи остается только один параметр.
Понял. Это потому, что $db->loadAssocList('item_id'); создает массив с ключами = ИДами материалов. А эти ИДы одинаковые у многих значений полей (у всех, которые относятся к этому материалу они совпадают). А потому затираются. Тут придется с циклом:
Код
<?php
$query = '
SELECT fv.field_id, fv.value, c.id, c.catid, c.title, c.images
FROM #__fields_values as fv
LEFT JOIN #__content as c ON c.id = fv.item_id
WHERE fv.item_id IN ('.$params.')
';
$db->setQuery($query);
$rows = $db->loadObjectList();
$items = array();
foreach($rows as $row) $items[$row->item_id][$row->field_id] = $row;
Здесь будет сгруппировано сперва по материалам (юзерам), потом (второй индекс) по ИДам доп.полей. Т.е. все данные будут доступны.
« Последнее редактирование: 20.09.2020, 19:01:41 от sivers »
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
$row->item_id - Null. внутри цикла, оттого остается только 1.
т.е в запросе не хватало fv.item_id
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
в общем, все работает (только запрос подправить, чтобы ид итемов тащил).
ну и, чтобы мусор не тащить, а только нужные поля, можно ещё добавить ниже WHERE
Код
AND fv.field_id IN (3,2,9)
где значения  в скобка - ид-шники нужных доп. полей.

спасибо NewUsers & sivers, чутка поумнел  ;D
зы
почему-то думал, что присоединение будет в виде отдельного блока с данными статей, а не так, что они в каждую строку добавятся.
интересно, если много данных тащить, то не будет ли менее затратно делать 2 запроса и получать 2 массива?
типа, если в запрос добавить ещё и текст статьи, то это ж ужас будет - дублировать его по количеству доп.полей.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Архив статей – в чём суть?

Автор Gerostrat

Ответов: 3
Просмотров: 241
Последний ответ 14.03.2024, 21:03:48
от sivers
[Решено] Перестали работать переходы по меню сайта

Автор AlexP750

Ответов: 12
Просмотров: 543
Последний ответ 06.02.2024, 12:42:26
от AlexP750
Замена данных сайта на данные поддомена

Автор rezchik

Ответов: 5
Просмотров: 397
Последний ответ 05.02.2024, 11:45:36
от web1
Joomla 3.10.12 и MySQL 8

Автор designer71

Ответов: 0
Просмотров: 401
Последний ответ 19.10.2023, 11:25:18
от designer71
Окно заполнение контактных данных

Автор Vlad1323

Ответов: 1
Просмотров: 383
Последний ответ 29.03.2023, 16:47:54
от arma