2014-12-11 6 views
1

У меня есть вид взлома на компонент joomla, он хорошо работает с одной таблицей, но я смотрел на наличие более одной таблицы, но я не могу заставить ее рисовать из 2 таблицы. т.е. одна таблица будет иметь возможность указывать информацию о статье, другая таблица будет иметь другие данные, относящиеся к статьям и их идентификаторам. Любые идеи о том, как я могу сделать этоБазы данных Joomla и как извлечь данные

+0

API-интерфейс Joomla JDatabase для доступа к базе данных. [Чтение документов] (https://docs.joomla.org/Accessing_the_database_using_JDatabase) – HamZa

ответ

0

Выбор записей из нескольких таблиц

Использования методов соединения в JDatabaseQuery, вы можете выбрать записи из нескольких связанных таблиц. Общий метод «join» принимает два аргумента; «тип» соединения (внутренний, внешний, левый, правый) и условие соединения. В следующем примере вы заметите, что мы можем использовать все ключевые слова, которые мы обычно использовали бы, если бы мы писали собственный SQL-запрос, включая ключевое слово AS для таблиц псевдонимов и ключевое слово ON для создания связей между таблицами. Также обратите внимание, что псевдоним таблицы используется во всех методах, которые ссылаются на столбцы таблицы (I.e. select, where, order).

// Get a db connection. 
$db = JFactory::getDbo(); 

// Create a new query object. 
$query = $db->getQuery(true); 

// Select all articles for users who have a username which starts with 'a'. 
// Order it by the created date. 
// Note by putting 'a' as a second parameter will generate `#__content` AS `a` 
$query 
    ->select($db->quoteName(array('a.*', 'b.username', 'b.name'))) 
    ->from($db->quoteName('#__content', 'a')) 
    ->join('INNER', $db->quoteName('#__users', 'b') . ' ON (' . $db->quoteName('a.created_by') . ' = ' . $db->quoteName('b.id') . ')') 
    ->where($db->quoteName('b.username') . ' LIKE \'a%\'') 
    ->order($db->quoteName('a.created') . ' DESC'); 

// Reset the query using our newly populated query object. 
$db->setQuery($query); 

// Load the results as a list of stdClass objects (see later for more options on retrieving data). 
$results = $db->loadObjectList(); 

Даже если вы создаете ваши компоненты с помощью Component Creator вам все равно придется делать такого рода вещи вручную.

Смежные вопросы