Photo by Caspar Camille Rubin
Запрос к базе данных в Joomla

Запрос к базе данных в Joomla 3

18.08.23

Иногда возникает необходимость сделать запрос к базе данных в Joomla 3, например, найти минимальную или максимальную цену на товар в категории. И чтобы не городить костыли надо использовать встроенный функционал:

$db =&JFactory::getDBO();
$query = "SELECT product_id FROM #__jshopping_products_to_categories WHERE category_id='177'";
$db->setQuery($query);
$query_result = $db->loadObjectList();
foreach($query_result as $row) {
    echo $row->product_id;
}

В приведённом выше коде мы получаем список ID товаров в категории с ID = 177 Если, конечно, вы используете для построения магазина компонент JoomShopping.

Следующий пример запроса поиска товара с максимальной ценой в категории:

$db =&JFactory::getDBO();
$category_id = 177;
$query = "SELECT product_id FROM #__jshopping_products_to_categories WHERE category_id='".$category_id."'";
$db->setQuery($query);
$query_result = $db->loadObjectList();
$max_price = 0;
foreach($query_result as $row) {
    $query = "SELECT product_price, product_publish FROM #__jshopping_products WHERE product_id='".$row->product_id."' LIMIT 1";
    $db->setQuery($query);
    $price_row = $db->loadObjectList();
    if ($price_row[0]->product_publish && $price_row[0]->product_price > $max_price) {
        $max_price = $price_row[0]->product_price;
    }
}
echo $max_price;