CodeIgniter两个表与具有可选行的最后一个表连接

时间:2013-12-05 12:22:12

标签: php mysql codeigniter

我的数据库中有两个表,按照以下方式组织

- >文章(条款ArticleID,用户ID,ArticleCategory,ArticleTitle,ArticleBody,ArticleIsActive)

- > ArticleImages(ArticleImageID,条款ArticleID,ArticleImageExtension)

情境:

=>用户想要发布文章,用户可以选择发布带有/不带多个图像的文章,当用户发布带有多个图像的文章时,文章详细信息存储在Articles表中,图像名称和扩展名存储在ArticleImages表中使用articleID作为参考

问题:

=>当用户发布没有图像的文章时,帖子数据存储在Articles表中,但由于没有图像,因此ArticleImages表中没有存储数据,所以当我遍历我的文章页面上的所有数据时,我使用此查询

  public function getAllHomeArticles(){
  $this->db->select('*');
  $this->db->from('CI_Articles_Tbl');
  $this->db->join('CI_Article_Images_Tbl',
 'CI_Articles_Tbl.roflArticle_ID =
  CI_Article_Images_Tbl.roflArticle_ID');
  $this->db->group_by('CI_Articles_Tbl.roflArticle_ID');
  $query = $this->db->get();
  return $query->result_array();
  }

我使用ArticleID作为连接选项加入两个表,问题是,在ArticleImages表中没有图像,我无法显示那些没有图像的文章,显示所有文章的最佳方法是什么? ArticleImages表中的图像。

任何帮助都将受到高度赞赏!

1 个答案:

答案 0 :(得分:1)

将join语句更改为:

 $this->db->join('CI_Article_Images_Tbl', 'CI_Articles_Tbl.roflArticle_ID = CI_Article_Images_Tbl.roflArticle_ID', 'left');

在末尾添加左侧以进行MySQL左连接,其中包括来自CI_Articles_Tbl的所有结果以及来自CI_Article_Images_Tbl的结果,这与默认内部联接不同,默认内部联接仅在两个表中都存在时返回结果。

可以在以下位置找到理解MySQL连接的良好指南:http://www.sitepoint.com/understanding-sql-joins-mysql-database/