запрос mysql в активной записи codeigniter

#php #mysql #codeigniter #activerecord #relational-database

#php #mysql #codeigniter #activerecord #реляционная база данных

Вопрос:

Я выполняю этот запрос,

 $this->db->select('news.news_id, news.title, news.article, news.date_posted, news_assets.news_assets_id, news_assets.url')
        ->from('news_assets')
        ->join('news', 'news_assets.news_news_id = news.news_id', 'left')
        ->order_by('news.date_posted', 'DESC');

        $query = $this->db->get();

        return $query->row_array();
 

Теперь этот запрос возвращает новостную статью, и он должен возвращать любые приписываемые активы из таблицы news assets, таблица news assets имеет отношение 1: n к новостям, поэтому новостная статья может иметь бесконечное количество активов, но в активе может быть только 1 новостная статья.

Мой вопрос в том, что когда я запускаю этот запрос, возвращается только один ресурс для новостной статьи, почему это должно быть?

Ответ №1:

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

Также у вас есть $query->row_array(); , который возвращает только одну строку, но если у вас есть 1 строк, которые вы должны использовать, в соответствии с этим:

 foreach ($query->result_array() as $row) {
   echo $row['title'];
   echo $row['name'];
}
 

Ответ №2:

возможно, у вас действительно есть одна строка в таблице активов, но если нет, я предполагаю, что ваше СОЕДИНЕНИЕ неверно, возможно, вы делаете left вместо right или наоборот

Комментарии:

1. Это лучше всего подходит как комментарий, а не как ответ

Ответ №3:

Попробуйте выполнить запрос ниже.

     $this->db->select('news.news_id, news.title, news.article, news.date_posted, news_assets.news_assets_id, news_assets.url');
    $this->db->from('news_assets');
    $this->db->join('news', 'news.news_id=news_assets.news_news_id', 'left');
    $this->db->order_by('news.date_posted', 'DESC');
 

Комментарии:

1. соединение в столбце не было написано должным образом.

2. извините, вы должны указать это в своем ответе, поскольку это было немного сложно определить