founder Posted June 7 Report Share Posted June 7 Добрый день. Установлена мультиязычная 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
alexivchenko Posted June 7 Report Share Posted June 7 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 Author Report Share Posted June 7 (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 by founder Quote Link to post Share on other sites
founder Posted June 7 Author Report Share Posted June 7 Не пойму откуда берется 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 Report Share Posted June 7 3 минуты назад, founder сказал: Не пойму откуда берется category_brand_id, в коде его вообще нет В коде есть, но, видимо, не там, где Вы смотрите... Возможно, это возникает в переменной $lang_sql->join. А возможно, еще в каком-нибудь из десятков мест... Quote Link to post Share on other sites
alexivchenko Posted June 7 Report Share Posted June 7 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 Author Report Share Posted June 7 12 минут назад, phukortsin сказал: В коде есть, но, видимо, не там, где Вы смотрите... Возможно, это возникает в переменной $lang_sql->join. А возможно, еще в каком-нибудь из десятков мест... Запустил поиск по всем файлам на сайте, ничего не найдено по запросу category_brand_id Quote Link to post Share on other sites
phukortsin Posted June 8 Report Share Posted June 8 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.