founder Опубликовано 7 июня, 2023 Жалоба Поделиться Опубликовано 7 июня, 2023 Добрый день. Установлена мультиязычная Simpla, хочу поставить описание брендов в категории в api/Categories.php // Страницы описания брендов public function get_category_brand($category_id, $brand_id) { $query = "SELECT * FROM __category_brands WHERE category_id = $category_id AND brand_id = $brand_id"; $this->db->query($query); return $this->db->result(); } public function get_category_brands($id) { $query = "SELECT cb.*, b.name FROM __category_brands cb INNER JOIN __brands b ON (cb.brand_id = b.id) WHERE cb.category_id = $id"; $this->db->query($query); return $this->db->results(); } Меняю на: // Страницы описания брендов в категории public function get_category_brand($category_id, $brand_id) { $lang_sql = $this->languages->get_query(array('object'=>'category_brand')); $query = "SELECT cb.id, cb.brand_id, cb.category_id, ".$lang_sql->fields." FROM __category_brands cb ".$lang_sql->join." WHERE category_id = $category_id AND brand_id = $brand_id"; $this->db->query($query); return $this->db->result(); } public function get_category_brands($id) { $lang_sql = $this->languages->get_query(array('object'=>'category_brand')); $query = "SELECT cb.id, cb.brand_id, cb.category_id, ".$lang_sql->fields.", b.name FROM __category_brands cb ".$lang_sql->join." INNER JOIN __brands b ON (cb.brand_id = b.id) WHERE cb.category_id = $id"; $this->db->query($query); return $this->db->results(); } В админке отображает ошибку что не найдено в БД c.id Подскажите, пожалуйста, где ошибка? Цитата Ссылка на сообщение Поделиться на другие сайты
alexivchenko Опубликовано 7 июня, 2023 Жалоба Поделиться Опубликовано 7 июня, 2023 2 часа назад, founder сказал: Добрый день. Установлена мультиязычная Simpla, хочу поставить описание брендов в категории в api/Categories.php // Страницы описания брендов public function get_category_brand($category_id, $brand_id) { $query = "SELECT * FROM __category_brands WHERE category_id = $category_id AND brand_id = $brand_id"; $this->db->query($query); return $this->db->result(); } public function get_category_brands($id) { $query = "SELECT cb.*, b.name FROM __category_brands cb INNER JOIN __brands b ON (cb.brand_id = b.id) WHERE cb.category_id = $id"; $this->db->query($query); return $this->db->results(); } Меняю на: // Страницы описания брендов в категории public function get_category_brand($category_id, $brand_id) { $lang_sql = $this->languages->get_query(array('object'=>'category_brand')); $query = "SELECT cb.id, cb.brand_id, cb.category_id, ".$lang_sql->fields." FROM __category_brands cb ".$lang_sql->join." WHERE category_id = $category_id AND brand_id = $brand_id"; $this->db->query($query); return $this->db->result(); } public function get_category_brands($id) { $lang_sql = $this->languages->get_query(array('object'=>'category_brand')); $query = "SELECT cb.id, cb.brand_id, cb.category_id, ".$lang_sql->fields.", b.name FROM __category_brands cb ".$lang_sql->join." INNER JOIN __brands b ON (cb.brand_id = b.id) WHERE cb.category_id = $id"; $this->db->query($query); return $this->db->results(); } В админке отображает ошибку что не найдено в БД c.id Подскажите, пожалуйста, где ошибка? Помимо мультиязычности, которой стандарно нет в SimplaCMS у вас еще свой функционал вывода категорий и брендов к ним. Ошибку нужно смотреть на месте, а так попробуйте: // Страницы описания брендов в категории public function get_category_brand($category_id, $brand_id) { $lang_sql = $this->languages->get_query(array('object'=>'category_brand')); $query = $this->db->placehold("SELECT cb.id, cb.brand_id, cb.category_id, $lang_sql->fields FROM __category_brands cb $lang_sql->join WHERE category_id = $category_id AND brand_id = $brand_id "); $this->db->query($query); return $this->db->result(); } public function get_category_brands($id) { $lang_sql = $this->languages->get_query(array('object'=>'category_brand')); $query = $this->db->placehold("SELECT cb.id, cb.brand_id, cb.category_id, b.name, $lang_sql->fields FROM __category_brands cb $lang_sql->join INNER JOIN __brands b ON (cb.brand_id = b.id) WHERE cb.category_id = $id "); $this->db->query($query); return $this->db->results(); } Цитата Ссылка на сообщение Поделиться на другие сайты
founder Опубликовано 7 июня, 2023 Автор Жалоба Поделиться Опубликовано 7 июня, 2023 (изменено) 3 часа назад, alexivchenko сказал: Помимо мультиязычности, которой стандарно нет в SimplaCMS у вас еще свой функционал вывода категорий и брендов к ним. Ошибку нужно смотреть на месте, а так попробуйте: // Страницы описания брендов в категории public function get_category_brand($category_id, $brand_id) { $lang_sql = $this->languages->get_query(array('object'=>'category_brand')); $query = $this->db->placehold("SELECT cb.id, cb.brand_id, cb.category_id, $lang_sql->fields FROM __category_brands cb $lang_sql->join WHERE category_id = $category_id AND brand_id = $brand_id "); $this->db->query($query); return $this->db->result(); } public function get_category_brands($id) { $lang_sql = $this->languages->get_query(array('object'=>'category_brand')); $query = $this->db->placehold("SELECT cb.id, cb.brand_id, cb.category_id, b.name, $lang_sql->fields FROM __category_brands cb $lang_sql->join INNER JOIN __brands b ON (cb.brand_id = b.id) WHERE cb.category_id = $id "); $this->db->query($query); return $this->db->results(); } Все равно ошибка: Warning: Unknown column 'l.category_brand_id' in 'on clause' in W:\home\localhost\www\site\api\Database.php on line 132 Изменено 7 июня, 2023 пользователем founder Цитата Ссылка на сообщение Поделиться на другие сайты
founder Опубликовано 7 июня, 2023 Автор Жалоба Поделиться Опубликовано 7 июня, 2023 Не пойму откуда берется category_brand_id, в коде его вообще нет в CategoryAdmin.php добавлено: $category_brands = $this->categories->get_category_brands($category->id); $this->design->assign('category_brands', $category_brands); foreach($category_brands as $brand) { $brand_ids[$brand->brand_id] = $brand->brand_id; } $all_brands = $this->brands->get_brands(); foreach($all_brands as $brand) { if(!isset($brand_ids[$brand->id])) { $brands[] = $brand; } } $this->design->assign('brands', $brands); Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 7 июня, 2023 Жалоба Поделиться Опубликовано 7 июня, 2023 3 минуты назад, founder сказал: Не пойму откуда берется category_brand_id, в коде его вообще нет В коде есть, но, видимо, не там, где Вы смотрите... Возможно, это возникает в переменной $lang_sql->join. А возможно, еще в каком-нибудь из десятков мест... Цитата Ссылка на сообщение Поделиться на другие сайты
alexivchenko Опубликовано 7 июня, 2023 Жалоба Поделиться Опубликовано 7 июня, 2023 14 минут назад, founder сказал: Не пойму откуда берется category_brand_id, в коде его вообще нет в CategoryAdmin.php добавлено: $category_brands = $this->categories->get_category_brands($category->id); $this->design->assign('category_brands', $category_brands); foreach($category_brands as $brand) { $brand_ids[$brand->brand_id] = $brand->brand_id; } $all_brands = $this->brands->get_brands(); foreach($all_brands as $brand) { if(!isset($brand_ids[$brand->id])) { $brands[] = $brand; } } $this->design->assign('brands', $brands); напишите в личные сообщения, разберемся. гадать на гуще нет желания. Цитата Ссылка на сообщение Поделиться на другие сайты
founder Опубликовано 7 июня, 2023 Автор Жалоба Поделиться Опубликовано 7 июня, 2023 12 минут назад, phukortsin сказал: В коде есть, но, видимо, не там, где Вы смотрите... Возможно, это возникает в переменной $lang_sql->join. А возможно, еще в каком-нибудь из десятков мест... Запустил поиск по всем файлам на сайте, ничего не найдено по запросу category_brand_id Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 8 июня, 2023 Жалоба Поделиться Опубликовано 8 июня, 2023 13 часов назад, founder сказал: Запустил поиск по всем файлам на сайте, ничего не найдено по запросу category_brand_id Возможно, программно генерируется из частей. Надо бы распечатывать текст запроса, а потом копать дальше. А вообще надо проверять всю схему... Очень вероятно, это возникает от $lang_sql = $this->languages->get_query(array('object'=>'category_brand')); Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.