CakePHP显示ID以外的其他属性

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” )

我对CakePHP有一个问题,即显示表的名称而不是外键

设置:3张表格:球员、团队、游戏
三种型号
团队:
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']
。很高兴听到您找到了解决方案。请确保将此问题标记为已回答。最好将已发布的答案标记为正确答案,而不是将您自己的评论标记为正确。这更符合网站的工作方式。