CakePHP显示ID以外的其他属性
我对CakePHP有一个问题,即显示表的名称而不是外键 设置:3张表格:球员、团队、游戏CakePHP显示ID以外的其他属性,cakephp,cakephp-2.3,cakephp-model,Cakephp,Cakephp 2.3,Cakephp Model,我对CakePHP有一个问题,即显示表的名称而不是外键 设置:3张表格:球员、团队、游戏 三种型号 团队: public$hasMany='Player' 玩家: public$belongsTo='Team' 游戏: public$belongsTo=array( “HTeam”=>数组( 'className'=>'Team', “foreignKey”=>“hteam” ), “ATeam”=>数组( 'className'=>'Team', “foreignKey”=>“ateam” )
三种型号
团队:
public$hasMany='Player'代码>
玩家:
public$belongsTo='Team'代码>
游戏:
public$belongsTo=array(
“HTeam”=>数组(
'className'=>'Team',
“foreignKey”=>“hteam”
),
“ATeam”=>数组(
'className'=>'Team',
“foreignKey”=>“ateam”
)
我认为这个模型一切都很好,因为ID显示正确,我可以添加、删除等等,所以一切都很好。唯一不起作用的是显示团队的名称,而不是团队的ID。
在球员表中,球队id作为外键。当我想列出所有球员时,只会显示球队id,而不会显示带有球队链接的名称。我尝试了很多方法,但都没有成功。当我列出所有比赛时,我也遇到了同样的问题
我试图在团队模型中设置$displayField='name'
,但我不知道如何在由Userscontroller控制的视图中调用该名称
播放机控制器:
$this->set('players',$this->Player->find('all');
$teams=$this->Team->find('list',array('fields'=>array('name'));
$this->set('teams',$teams);
也尝试过这个:
$teams=$this->Player->Team->find('list',array('fields'=>array('name'));
这是我试图显示名称的代码:
但这不起作用,因为我没有团队id。
我认为这个问题以前已经得到了回答,但要么我会傻到发现它,要么我会傻到正确地实施它
谢谢你的帮助!CakePHP's
设置$teams后,它应该包含
array(
1 => 'Team 1 Name',
2 => 'Team 2 Name',
...
)
无论您使用两种方法中的哪一种进行设置。因此,尝试查找$teams['Team']['name']
都不会起作用,因为数组的结构不是这样的
以下是您应该用来向每个团队输出链接的实际循环:
<ul>
<?php foreach ($teams as $team_id => $team_name): ?>
<li>
<?php echo $this->Html->link(
$team_name,
array(
'controller' => 'teams',
'action' => 'view',
$team_id
)
); ?>
</li>
<?php endforeach; ?>
</ul>
-
感谢Phanton Watson的帮助。解决方案太简单了:(
它是控制器中的find('all')
在视图中,它是$player[Team][name]
很抱歉打扰了社区。我不知道为什么我没有更早地找到解决方案。请更好地格式化您的答案代码,这是一个混乱。感谢您的答案。通过此循环,我可以一次获得所有球队的名称和链接。我想要的只是球员的球队。以下是我在之后使用的视图
这一行,应该在teamname后面加上.Thx链接。然后你需要为你对团队::find()
的调用添加特殊性。在这种情况下,你必须添加'Team.id'=>$player['player']['Team_id']
。但是如果你只得到一个团队,你最好是团队::find('first')
而不是团队::查找('list')
。这里是。对不起,我还没有回答。我想我必须更具体一些。当我使用find(first)时,我只得到ID为1的团队(如果这个团队有玩家)。你的第一个建议不是生成所有团队的列表……但我想要一个表或其他东西,应该显示所有玩家(查找(全部)很容易)然后我想要玩家的特定团队。这意味着我必须“跟随”团队ID到团队表。我想我还不理解这个概念。我已经阅读了很多教程和stackopverflow消息,但我无法开发解决方案。:(如果你“想要一个表或什么,应该显示所有玩家”,听起来您应该在玩家模型上调用find()
。如果您已经实现并定义了关联,则默认情况下,每个玩家的关联团队将包含在find()
的结果中,例如$players[0]['Team']['name']
。很高兴听到您找到了解决方案。请确保将此问题标记为已回答。最好将已发布的答案标记为正确答案,而不是将您自己的评论标记为正确。这更符合网站的工作方式。