CakePHP中的多重关系



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

我创建了一个"Tournamentuser"表,控制器&模型,其中存储了锦标赛id、用户id和团队id。

然后当在锦标赛下使用View.ctp时,它应该显示Username&Team。与锦标赛用户相关的用户名。到目前为止,我只通过从表中检索到了id。aforeach(..as..)。我可以在CakePHP查询中看到它检索数据,我只是不知道如何打印。

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

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

例如,如果我们需要一个关系:锦标赛用户,我们必须遵循约定(在CakePHP 2+中):

  • 控制器:TournamentsUsersController.php
  • 型号:TournamentsUser.php
  • 表:锦标赛用户

如果在拥有关系之前遵循了以上所有约定,则锦标赛用户必须定义两个表之间的关系。

在这里,您可以找到有关如何做到这一点的更多详细信息:http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html

如果在此之前所有操作都正确,则现在可以查询锦标赛用户模型。

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

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

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

debug($data);

为了打印数据,您可以使用For/foreach循环:

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

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

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

或者,如果你有不止一个:

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

显然,这需要根据您的代码进行调整,但它应该会帮助您获得想法。

相关内容

  • 没有找到相关文章

最新更新