CakePHP简单表关联帮助
在cakephp中,我真的很难处理表关联,我只想将两个表关联在一起,但是一个表有两个外键指向另一个表 由于某些原因,我无法在home_id的字段选择表单中显示任何信息 请参阅下面的数据库图片和相关代码 我对cakephp真的很陌生,但我觉得如果我能做到这一点,它将非常有用-非常感谢任何帮助CakePHP简单表关联帮助,cakephp,Cakephp,在cakephp中,我真的很难处理表关联,我只想将两个表关联在一起,但是一个表有两个外键指向另一个表 由于某些原因,我无法在home_id的字段选择表单中显示任何信息 请参阅下面的数据库图片和相关代码 我对cakephp真的很陌生,但我觉得如果我能做到这一点,它将非常有用-非常感谢任何帮助 }Cake不支持开箱即用的复杂FK,您可以定义与以下条件的关系 public $hasMany = array( 'TheRelation' => array( 'foreig
}Cake不支持开箱即用的复杂FK,您可以定义与以下条件的关系
public $hasMany = array(
'TheRelation' => array(
'foreignKey' => false,
'conditions' => array(
... conditions ...
)
)
)
您必须为SafcTeam模型的每个关系使用别名:
var $belongsTo = array(
//relationship for your home_id fk
'SafcHomeTeam' => array(
'className' => 'SafcTeam',
'foreignKey' => 'home_id'
),
//relationship for your away_id key
'SafcAwayTeam' => array(
'className' => 'SafcTeam',
'foreignKey' => 'away_id'
)
);
在相关的safc团队模型中:
var $hasMany = array(
'SafcHomeTeam' => array(
'className' => 'SafcEvent',
'foreignKey' => 'home_id',
),
'SafcAwayTeam' => array(
'className' => 'SafcEvent',
'foreignKey' => 'away_id',
)
);
在SafceEvents控制器的“添加和编辑”操作中添加以下内容:
//to respect cake conventions need the select list to be plural (Teams <--- with a s at the end)
$safcHomeTeams = $this->SafcEvent->SafcHomeTeam->find('list');
$safcAwayTeams = $this->SafcEvent->SafcAwayTeam->find('list');
//为了遵守蛋糕惯例,选择列表必须是复数形式(Teams-SafcEvent->SafcHomeTeam->find('list');
$safcAwayTeams=$this->SafcEvent->safcAwayTeams->find('list');
//还要将这些列表传递给视图
$this->set(紧凑型('safcayteams','SafcHomeTeams')
在SafceEvent视图中添加并编辑
在表格部分:
//to respect cake convention to construct your select input properly
//you need to refere to the list established in the controller ($SafcHomeTeams by using $SafcHomeTeam_id <--singular + "_" + "id")
echo $this->Form->input('SafcAwayTeam_id');
echo $this->Form->input('SafcHomeTeam_id');
//遵守cake约定,正确构造select输入
//您需要参考控制器中建立的列表($SafcHomeTeams,使用$SafcHomeTeam_id Form->input('safcayteam_id');
echo$this->Form->input('SafcHomeTeam_id');
太多的代码。你需要隔离问题,理想情况下发布一个最具代表性的示例。请关闭问题,因为它回答了你的教条式回答。请你能详细介绍一下你的示例吗。我真的是一个蛋糕初学者,我制作的代码仅仅来自数据库的设计和n针对它烘焙的模型和事件。这里有很多解释。比任何人都需要的更多。在我发布这篇文章之前,我已经阅读了那篇文章。看看代码,我相信我的关联是正确的。我甚至可以看到运行正确的SQL来生成值列表,但它们在我的表单中是不可选择的。如果it’这本来是小菜一碟,但尝试做一些我认为非常简单的事情却变得非常复杂和令人沮丧。嗨,guignol,你所发布的内容对我来说非常有意义,这也是我最初理解人际关系的方式。但即使回到这些方面,我也无法将下拉字段用于popul在活动表单中与团队一起吃饭。在我进行更改后,我还需要做些什么吗???如果编辑不理解,请发布控制器和视图的代码。谢谢guignol,我真的很感谢你的帮助-这几天让我发疯。我用一些屏幕截图展示了控制器、视图和模型它仍然没有做它应该做的。谢谢。如果需要,我可以上传代码和db。嗨,guignol,我在这里上传了文件…有两个文件1)safc_cake.sql.gz(数据库)和2)safc_cake.tar.gz(代码)。再次感谢你的帮助。
//to respect cake convention to construct your select input properly
//you need to refere to the list established in the controller ($SafcHomeTeams by using $SafcHomeTeam_id <--singular + "_" + "id")
echo $this->Form->input('SafcAwayTeam_id');
echo $this->Form->input('SafcHomeTeam_id');