Переписываем код.
Изменяем вот этот абзац: protected function getListQuery():
---------------------------------------
Начали мы разбираться и что-то запутались.
1.Сначала мы устанавливаем запрос к базе данных:
$db = $this->getDbo();
$query = $db->getQuery(true);2. Затем обращаемся к таблице #__content
$query->select('a.*'); $query->from($db->quoteName('#__content', 'a'));$query->where($db->quoteName('a.title') ); - если мы правильно поняли, здесь ставим фильтр, который отбирает названия материалов
$query->where($db->quoteName('a.created_by'). ' = ' . (int) JFactory::getUser()->get('id')'); - здесь мы поставили фильтр, отбирающий материалы текущего пользователя (не уверены, что правильно)
Материал, который создал текущий пользователь, мы вроде как из таблицы выбрали. Теперь нам нужно к этому материалу прикрепить названия сборников, т.е. "из таблицы compilations присоединять сборники по content_id (делать JOIN)" (автор
b2z)
Вот здесь мы и застопарились: в таблице
compilations нет поля
content_id. Поле
content_id есть в таблице
chmos_compilations_articles. Так какую же таблицу нам использовать для JOIN?
3. Делаем пока так, как Вы нам подсказали, т.е. присоединяем таблицу
#__chmos_compilations$query->select($db->quoteName('b.title')); - если мы правильно поняли, здесь ставим фильтр, который отбирает названия сборников
$query->leftJoin( $db->quoteName('#__chmos_compilations', 'b') . ' ON ' . $db->quoteName('b.id') -здесь мы говорим, что поле "id" таблицы
chmos_compilations связано с полем "id" таблицы
content . ' = ' . $db->quoteName('b.id'));4. Делаем сортировку по полю
title таблицы
chmos_compilations, по возрастанию
$query->order($db->quoteName('b.title'). ' ASC');5. Делаем запрос.
$db->setQuery($query);6. Получаем результат
$result = $db->loadObjectList();--------------------------------
Подскажите, пожалуйста, правильно ли мы рассуждаем? Или мы не тем путём пошли?