founder Posted June 7, 2023 Report Share Posted June 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 Подскажите, пожалуйста, где ошибка? Quote Link to post Share on other sites
sergeevizh Posted June 7, 2023 Report Share Posted June 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(); } Quote Link to post Share on other sites
founder Posted June 7, 2023 Author Report Share Posted June 7, 2023 (edited) 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 Edited June 7, 2023 by founder Quote Link to post Share on other sites
founder Posted June 7, 2023 Author Report Share Posted June 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); Quote Link to post Share on other sites
phukortsin Posted June 7, 2023 Report Share Posted June 7, 2023 3 минуты назад, founder сказал: Не пойму откуда берется category_brand_id, в коде его вообще нет В коде есть, но, видимо, не там, где Вы смотрите... Возможно, это возникает в переменной $lang_sql->join. А возможно, еще в каком-нибудь из десятков мест... Quote Link to post Share on other sites
sergeevizh Posted June 7, 2023 Report Share Posted June 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); напишите в личные сообщения, разберемся. гадать на гуще нет желания. Quote Link to post Share on other sites
founder Posted June 7, 2023 Author Report Share Posted June 7, 2023 12 минут назад, phukortsin сказал: В коде есть, но, видимо, не там, где Вы смотрите... Возможно, это возникает в переменной $lang_sql->join. А возможно, еще в каком-нибудь из десятков мест... Запустил поиск по всем файлам на сайте, ничего не найдено по запросу category_brand_id Quote Link to post Share on other sites
phukortsin Posted June 8, 2023 Report Share Posted June 8, 2023 13 часов назад, founder сказал: Запустил поиск по всем файлам на сайте, ничего не найдено по запросу category_brand_id Возможно, программно генерируется из частей. Надо бы распечатывать текст запроса, а потом копать дальше. А вообще надо проверять всю схему... Очень вероятно, это возникает от $lang_sql = $this->languages->get_query(array('object'=>'category_brand')); Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.