CakePHP中的多个关系

时间:2012-09-07 13:49:27

标签: cakephp database-relations

我正在用CakePHP创建一个锦标赛平台。目前我已经创建了以下表格,模型和控制器,它们完美地运作:锦标赛,用户和团队。

我创建了一个“Tournamentuser”表,控制器&模型,也存储了tournament_id,user_id和team_id。

然后在锦标赛下使用View.ctp时,它应显示User.Username&与Tournamentuser相关的Team.Username。截至目前,我只是设法通过表从表中检索id。 a foreach(.. as ..)。我可以在CakePHP查询中看到它检索数据,我只是不知道如何打印它。

2 个答案:

答案 0 :(得分:1)

我想你已经知道了,但是在CakePHP中的约定是:

  • 模型必须具有单一名称:user / car / image
  • 控制器必须具有复数名称:users / cars / images
  • 表必须具有复数名称:users / cars / images

例如,如果我们需要关系:tournament-user,我们必须遵循约定(在CakePHP 2 +中):

  • controller:TournamentsUsersController.php
  • 型号:TournamentsUser.php
  • table:tournaments_users

如果在获得关系之前遵循了上述所有约定,那么锦标赛用户必须定义​​两个表之间的关系。

您可以在此处找到有关如何执行此操作的详细信息:http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html

如果到目前为止一切都正确完成,您现在可以查询TournamentsUser模型。

假设您在TournamentsUsersController.php控制器中:

$data = $this->TournamentsUser->find('all');

您现在可以使用以下内容查看$ data包含的内容:

debug($data);

要打印数据,您可以使用for / foreach循环:

$size = count($data);
for($i=0; $i<$size; ++i) {
   debug($data[$i]);
}

答案 1 :(得分:0)

如果您正在获取数据,但只需要访问这些值,则可以使用普通的PHP数组功能:

echo $myData['User']['username'];
echo $myData['Team']['username'];

或者,如果您有多个:

foreach($myData as $data) {
    echo $data['User']['username'];
    echo $data['Team']['username'];
}

显然,这需要根据您的代码进行调整,但它应该可以帮助您实现这个想法。