codeigniter活动记录中的mysql查询

时间:2011-10-25 09:48:26

标签: php mysql codeigniter activerecord relational-database

我正在运行此查询,

$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();

现在这个查询返回一篇新闻文章,它应该从新闻资产表中返回任何属性资产,新闻资产表与新闻有1:n关系,所以新闻文章可能拥有无限量的资产但是资产包含只有1篇新闻文章。

我的问题是,当我运行此查询时,只返回一篇新闻文章的资产,为什么会这样?

3 个答案:

答案 0 :(得分:0)

也许你真的在资产表中有一行,但如果没有,我想你的JOIN是错的, 也许你正在向右做或向右做

答案 1 :(得分:0)

尝试以下查询。

    $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');

答案 2 :(得分:0)

首先,至于我的想法,你应该选择新闻并加入news_assets,因为你的资产属于我理解的一篇新闻文章。

此外,您$query->row_array();只返回一行,但根据this,您应该使用1行以上:

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