Как я могу кодировать запрос к базе данных категории / подкатегории (один уровень в глубину) в Codeigniter? - PullRequest
1 голос
/ 03 октября 2011

Ах, старый вопрос о родительских / дочерних категориях в PHP.Приношу свои извинения, если этот вопрос уже задавался (я знаю, что он есть во многих формах), но выполнение поиска не может дать конкретного ответа, как это сделать, используя один запрос и Codeigniter.

В основном я занимаюсь разработкой объявленийсайт с использованием Codeigniter.Список может быть присвоен категории.Категория может быть автономной (без детей) или категория может иметь одного ребенка.

Используя функции «Активная запись» Codeigniter, у меня есть следующее, что почти работает.

$this->db->select('l.*');
$this->db->select('c.cat_parent, c.cat_slug, c.cat_name, c.cat_description, c.cat_display');
$this->db->select('c2.cat_slug AS parent_cat_slug, c2.cat_name AS parent_cat_name, c2.cat_description AS parent_cat_description, c2.cat_display AS parent_cat_display');

$this->db->limit($limit, $offset);

$this->db->join('listing_status ls', 'ls.status_id = l.listing_status');
$this->db->join('categories c', 'c.cat_id = l.listing_category');
$this->db->join('categories c2', 'c2.cat_parent = c.cat_id');

return $this->db->get('listings l')->result();

Я хочу иметь возможность вытащить листинг, ему назначена категория, и если к этой категории принадлежит листинг, у него также есть информация о родительской категории.Я добавил в 2 соединения, и это должно работать, я что-то пропустил?

1 Ответ

1 голос
/ 03 октября 2011

После небольшого возни я понял, что мое второе соединение было неправильным.Вот мой обновленный и рабочий код в надежде, что он поможет кому-то еще.

$this->db->select('l.*');
$this->db->select('c.cat_parent, c.cat_slug, c.cat_name, c.cat_description, c.cat_display');
$this->db->select('pc.cat_slug AS parent_cat_slug, pc.cat_name AS parent_cat_name, pc.cat_description AS parent_cat_description, pc.cat_display AS parent_cat_display');

$this->db->limit($limit, $offset);

$this->db->join('listing_status ls', 'ls.status_id = l.listing_status');
$this->db->join('categories c', 'c.cat_id = l.listing_category');
$this->db->join('categories pc', 'pc.cat_id = c.cat_parent');

return $this->db->get('listings l')->result();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...