2012-03-26 4 views
1

Внутри CodeIgniter я делаю выбор, получая некоторые блог-посты. Но я также хочу, чтобы полная реакция блога с функцией count(). Но когда я делаю это, он возвращает только одну запись.CodeIgniter выберите данные и количество

Пример:

$this->db->select('idee_id, titel, omschrijving, type, top_idee, tbl_users.foto as user_foto'); 
    $this->db->from('tbl_idee'); 
    $this->db->join('tbl_types', 'tbl_idee.type_id = tbl_types.type_id'); 
    $this->db->join('tbl_users', 'tbl_idee.user_id = tbl_users.user_id'); 
    $this->db->join('tbl_comments', 'tbl_users.user_id = tbl_comments.user_id'); 
    $this->db->order_by('post_datum', 'DESC'); 
    $this->db->limit(10); 
    $q = $this->db->get(); 

Теперь я только получить без полных · блоги, · реакции одного BlogPost. Как я могу это исправить? С помощью select в select.?

Благодаря

+0

Лучше сделайте это с другим запросом, также вы можете выбрать союз – safarov

+0

вы попробовали '$ this-> db-> group_by (" idee_id ");'? –

+0

-safrov: что выбрать UNION? Что-то вроде соединения? Потому что CI не поддерживает выбор union. Тогда я должен написать собственный запрос, правильно? -tpaksu: no, в select, мне нужно добавить count («реакции»), но тогда я получаю только одну запись. –

ответ

3

Прежде всего, необходимо сделать базу данных выбрать количество комментариев в каждом сообщении блога в

$this->db->select('idee_id, titel, omschrijving, type, top_idee, 
     tbl_users.foto as user_foto, COUNT(*) AS comments',FALSE); 

Обратите внимание, что второй параметр, он предотвращает CodeIgniter от разбора COUNT() функции

вы извлекаете данные из сообщения в блоге вместе со своими комментариями, поэтому вам необходимо указать GROUP BY данные, которые делают уникальную возможность для блоге:

$this->db->group_by('idee_id,titel, omschrijving, type, 
     top_idee, tbl_users.foto'); 

Остальная часть вашего запроса должна быть правильной

+0

Хорошо, только то, что мне нужно. благодаря –

0

Если вы знаете, необработанный SQL, чтобы получить вам данные, которые вам необходимы. Лучше бы сделать:

$this->db->query('YOUR QUERY HERE'); 

Таким образом, у вас есть свобода, чтобы построить Ваш SQL самостоятельно без использования методов CI DB. Я надеюсь, что это помогает ...

+0

Но проблема в том, нужно ли писать 2 разных запроса или я могу просто написать sql в одном запросе? –

+0

вы должны иметь возможность писать в одном запросе. группировка комментариев post_id должна сделать трюк ... – boug

+0

Спасибо, но решения были найдены :) –

0

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

еще для вашего результата.

$q = $this->db->get(); 
return $q->result_array(); 

и для подсчета записей

$q = $this->db->get(); 
$count = $q->num_rows(); 

Это будет подсчитывает ваши записи, а также.

Смежные вопросы