Есть функция:
public static function getProductByName($link) {
$db = Db::getConnection();
$sql = 'SELECT p.*,
cat.name AS category_name,
cat.link AS category_link,
prop.title AS property_title,
prop.descript AS property_descr,
pr_prop.value AS property_value
FROM products AS p
JOIN category AS cat ON cat.id = p.category_id
JOIN product_prop AS pr_prop ON pr_prop.product_id = p.id
JOIN properties AS prop ON prop.id = pr_prop.property_id
WHERE p.link = :link';
$result = $db->prepare($sql);
$result->bindParam(':link', $link, PDO::PARAM_INT);
$result->setFetchMode(PDO::FETCH_ASSOC);
$result->execute();
$res = $result->fetchAll();
$item = $res[0];
foreach($res as $p){
$item['properties'][] = [
'title' => $p['property_title'],
'value' => $p['property_value'],
'descr' => $p['property_descr']
];
}
unset($item['property_title']);
unset($item['property_value']);
unset($item['property_descr']);
return $item;
}
Строка JOIN product_prop AS pr_prop ON pr_prop.product_id = p.id выбирает свойства товара, т.е. таблица product_prop имеет столбцы id, product_id, property_id, value. Проблема в том, что если в таблице product_prop нет ни одной строки с pr_prop.product_id = p.id, дамп $res = $result->fetchAll(); возвращает array(0) { }
Вопрос: как сделать, чтобы при отсутствии данных в таблице product_prop в переменную $res шли остальные данные? Заранее спасибо!
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники