CI3 - считает и присоединяется к активной записи - PullRequest
0 голосов
/ 08 октября 2018

Я просто не могу заставить это работать.У меня есть таблица под названием категории, подобная этой:

table name:  categories
id
name

, и таблица сообщений, подобная этой:

table name: posts
id
category_id
title
body

Я пишу контроллер / модель / представление для вывода списка category.name иколичество постов, относящихся к категории.Я рушаюсь и жгу, как это сделать.Это частичная попытка.

<code>$this->db->select('
                posts.*,
                categories.*,
                COUNT(posts.category_id) as num_posts
            ');
$this->db->from('posts');
$this->db->join('categories', 'categories.id = posts.category_id');
$xx = $this->db->get();

    echo '<pre>';
    print_r($xx);
    echo '
';выход();

Любая помощь очень ценится.Вы искали мой стековый поток, но не видите решения CI3.

новое обновление.Этот sql работает:

SELECT
    categories.id,
    categories.name,
    Count(posts.id) as cnt
FROM
    categories
LEFT JOIN
    posts
ON
    categories.id=posts.category_id
GROUP BY
    categories.name

Когда я запускаю его, я получаю ниже, что я и ожидал:

id     name                              cnt
---------------------------------------------
80  |  24354234234                    |  2
76  |  Associations and Organizations |  9

Но когда я перехожу на активную запись, как это:

$this->db->select('categories.id, categories.name, COUNT(posts.id) as num_posts');
$this->db->from('categories');
$this->db->join('posts', 'categories.id = posts.category_id');
$this->db->group_by('categories.name');
$xx = $this->db->get();

Я печатаю_r ($ xx) и не вижу никаких моих данных.Вот что я получаю:

CI_DB_mysqli_result Object
(
[conn_id] => mysqli Object
    (
        [affected_rows] => 2
        [client_info] => 5.5.59
        [client_version] => 50559
        [connect_errno] => 0
        [connect_error] => 
        [errno] => 0
        [error] => 
        [error_list] => Array
            (
            )

        [field_count] => 3
        [host_info] => Localhost via UNIX socket
        [info] => 
        [insert_id] => 0
        [server_info] => 5.5.58-0ubuntu0.14.04.1
        [server_version] => 50558
        [stat] => Uptime: 7546485  Threads: 2  Questions: 523149  Slow queries: 0  Opens: 257  Flush tables: 1  Open tables: 200  Queries per second avg: 0.069
        [sqlstate] => 00000
        [protocol_version] => 10
        [thread_id] => 42310
        [warning_count] => 0
    )

[result_id] => mysqli_result Object
    (
        [current_field] => 0
        [field_count] => 3
        [lengths] => 
        [num_rows] => 2
        [type] => 0
    )

[result_array] => Array
    (
    )

[result_object] => Array
    (
    )

[custom_result_object] => Array
    (
    )

[current_row] => 0
[num_rows] => 
[row_data] => 
)

Все еще не знаю, как получить массив.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 09 октября 2018

Я обнаружил, что это объясняет, почему значения были пустыми: Запрос Codeigniter возвращается пустым

Дополнительная документация здесь.https://www.codeigniter.com/user_guide/database/results.html

Следовательно, это будет соответствовать значениям:

... extension of previous code
$xx = $this->db->get();
print_r($xx->result_array());
...