Подключение к базе данных:

$db = JFactory::getDbo();

 


Также используется и в файле модели.

Получение экземпляра класса JDatabaseQuery:

$query = $db->getQuery(true);

 



Выбор данных из одной таблицы:

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

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

// Select all records from the user profile table where key begins with "custom.".
// Order it by the ordering field.
$query->select(array('user_id', 'profile_key', 'profile_value', 'ordering'));
$query->from('#__user_profiles');
$query->where('profile_key LIKE \'custom.%\'');
$query->order('ordering ASC');

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

// Load the results as a list of stdClass objects.
$results = $db->loadObjectList();

 



Выбор данных из двух таблиц:

// 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.
$query
    ->select(array('a.*', 'b.username', 'b.name'))
    ->from('#__content AS a')
    ->join('INNER', '#__users AS b ON (a.created_by = b.id)')
    ->where('b.username LIKE \'a%\'')
    ->order('a.created DESC');

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

// Load the results as a list of stdClass objects.
$results = $db->loadObjectList();

 



Выбор данных из больше чем двух таблиц:

$query
    ->select(array('a.*', 'b.username', 'b.name', 'c.*', 'd.*'))
    ->from('#__content AS a')
    ->join('INNER', '#__users AS b ON (a.created_by = b.id)')
    ->join('LEFT', '#__user_profiles AS c ON (b.id = c.user_id)')
    ->join('RIGHT', '#__categories AS d ON (a.catid = d.id)')
    ->where('b.username LIKE \'a%\'')
    ->order('a.created DESC');

 



Вставка записи
с помощью SQL:

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

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

// Insert columns.
$columns = array('user_id', 'profile_key', 'profile_value', 'ordering');

// Insert values.
$values = array(1001, $db->quote('custom.message'), $db->quote('Inserting a record using insert()'), 1);

// Prepare the insert query.
$query
    ->insert($db->quoteName('#__user_profiles'))
    ->columns($db->quoteName($columns))
    ->values(implode(',', $values));

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

Задали sql запрос, теперь его выполняем:

try {
    // Execute the query in Joomla 2.5.
    $result = $db->query();
} catch (Exception $e) {
    // catch any database errors.
}

 

 

Для Joomla Framework 12.1 и выше:

 

try {
    // Execute the query in Joomla 3.0.
    $result = $db->execute();
} catch (Exception $e) {
    // catch any database errors.
}

 



с помощью объекта записи:

// Create and populate an object.
$profile = new stdClass();
$profile->user_id = 1001;
$profile->profile_key='custom.message';
$profile->profile_value='Inserting a record using insertObject()';
$profile->ordering=1;

try {
    // Insert the object into the user profile table.
    $result = JFactory::getDbo()->insertObject('#__user_profiles', $profile);
catch (Exception $e) {
    // catch any errors.
}

 



Обновление записи
с помощью SQL:

$db = JFactory::getDbo();

$query = $db->getQuery(true);

// Fields to update.
$fields = array(
    'profile_value=\'Updating custom message for user 1001.\'',
    'ordering=2');

// Conditions for which records should be updated.
$conditions = array(
    'user_id=42',
'profile_key=\'custom.message\'');

$query->update($db->quoteName('#__user_profiles'))->set($fields)->where($conditions);

$db->setQuery($query);

try {
$result = $db->query(); // Use $db->execute() for Joomla 3.0.
catch (Exception $e) {
// Catch the error.
}

 



с помощью объекта:

// Create an object for the record we are going to update.
$object = new stdClass();

// Must be a valid primary key value.
$object->id = 1;
$object->title = 'My Custom Record';
$object->description = 'A custom record being updated in the database.';

try {
    // Update their details in the users table using id as the primary key.
    $result = JFactory::getDbo()->updateObject('#__custom_table', $object, 'id');
} catch (Exception $e) {
    // catch the error.
}

 



Удаление записи:

$db = JFactory::getDbo();

$query = $db->getQuery(true);

// delete all custom keys for user 1001.
$conditions = array(
    'user_id=1001',
'profile_key LIKE \'custom.%\'');

$query->delete($db->quoteName('#__user_profiles'));
$query->where($conditions);

$db->setQuery($query);

try {
$result = $db->query(); // $db->execute(); for Joomla 3.0.
} catch (Exception $e) {
// catch the error.
}

 



Транзакция:

$db = JFactory::getDbo();

try {
    $db->transactionStart();

    $query = $db->getQuery(true);

    $values = array($db->quote('TEST_CONSTANT'), $db->quote('Custom'), $db->quote('/path/to/translation.ini'));

    $query->insert($db->quoteName('#__overrider'));
    $query->columns($db->quoteName(array('constant', 'string', 'file')));
    $query->values(implode(',',$values));

    $db->setQuery($query);
    $result = $db->query();

    $db->transactionCommit();
} catch (Exception $e) {
    $db->transactionRollback();
    // catch any database errors.
}

 



docs.joomla.org/Accessing_the_database_using_JDatabase/2.5