如何使用cakePHP加入数据库表?

时间:2011-01-29 11:42:19

标签: php sql cakephp

现在我已经尝试解决这个问题几个小时了,我一直在尝试谷歌和文档并反复阅读,但我似乎无法理解它。

让我试着解释一下我在做什么,但是简化项目,假设我正在用 cakePHP 制作一个博客。我得到了这3个表格,以简化我们只使用所需的字段。

Table: posts
Desc: This table store all our posts
Fields:
postid - Identifier for the post
title - The posts title

Table: sections
Desc: this table contains categories
Fields:
sectionid - Identifier
sectionname - Name

Table: postlinks 
Desc: this table store relations between posts and categories.
Fields:
postid – Post ID to determine what post is linked to what section
sectionid – Section ID to determine the section this post belong to

现在让我通过展示常规php和SQL代码的示例来尝试解释我想用cakePHP实现的目标:

(请注意,此代码是随时随地编写的,可能无法正常工作,但它可以让您了解我正在尝试做的事情)

<?php
/**
 *Block of code to fetch all posts
 */
while ( $rows = mysql_fetch_array($query) )
{
 $postid = $rows['postid'];
 /** Join postlinks and sections **/
 $sql = “SELECT sections.*, postlinks.* FROM postlinks
  INNER JOIN sections
  ON postlinks.sectionid = sections.sectionid
  WHERE postlinks.postid = '$postid'”;

 $query = mysql_query($sql);

 print “-- TITLE --”;
 print “-- CONTENT --”;

 print “Posted in “;

 /** Loop all categories **/
 while ( $rows = mysql_fetch_array($query) )
 {
  print $rows['sectionname'] . “ “;
 }
}
?>

现在我将尝试用言语解释我想要实现的目标:

当访问者浏览网页并进入网站的博客部分时,我希望列出X个最新帖子,这个帖子可以放在多个类别中,我们将所有类别链接存储在一个单独的表,这里是我填充的地方,我可以设法获取链接,但我似乎无法加入表并循环出名称。

希望有人能够解决我遇到的这个问题,或者指出我正确的方向和/或向我展示一个示例代码。

如前所述,我一直在阅读文档,我试图寻找答案,但

1 个答案:

答案 0 :(得分:0)

关联是作为cakephp中的连接实现的。 请遵循HABTM的概念,即“有并且属于许多人” 在你的模特协会做宣言。

在你的cakephp查询中声明关联。

递归 - &gt; -1或0或1或2

要了解有关关联的更多信息,请访问此链接enter link description here