CakePHP-保存相关模型数据

时间:2014-02-01 10:47:26

标签: php cakephp cakephp-2.3

好吧,假设有两个关联的模型,其中主模型与另一个模型具有hasMany关系。捐赠者有很多捐赠。我已经阅读了大部分蛋糕的文档,我也注意到了这一点(来自文档):

  

'在使用相关模型时,重要的是要意识到这一点   保存模型数据应始终由相应的CakePHP完成   模型。如果您要保存新帖子及其关联的评论,那么   您将在保存操作'(http://book.cakephp.org/2.0/en/models/saving-your-data.html

期间使用Post和Comment模型

正如@burzum对我的另一个问题所指出的那样:CakePHP - Controller or No Controller?,我仍然在努力决定哪种方法效果最好。

因此,参考前面提到的“捐赠和捐赠”示例,假设我们希望用户向捐赠者添加捐赠。因此,对于用户添加捐赠,需要查看捐赠者,访问该类别的网址:'domain / donor / view / 1',这意味着用户当前正在查看ID为1的捐赠者。然后在该视图中,让我们假设有一个允许用户添加捐赠的按钮。现在从我被告知的内容和我读到的内容来看,添加(捐赠)动作应该属于donationsController。

我们还假设添加(捐赠)操作有自己的视图..因此,如果我在'domain / donor / view / 1',用户将被重定向到'domain / donations / add / donor_id:1'然后使用。检索捐赠者的身份 $this->request->params['named']['post_id'] 并设置为FK如下: `$ this-> request-> data ['Donation'] ['donor_id'] = $ id;

但是我有一种直觉,告诉我这不是正确的方法,当有相关的模型时,从一个控制器跳到另一个控制器感觉不好。

对此有何见解?是否有可以应用或遵循的一般经验法则?是否可以将用户从donorController的视图操作重定向到donationsController的添加操作?

提前致谢!

1 个答案:

答案 0 :(得分:1)

据我所知,您的方法没有错,并且从视图中链接其他控制器是正常的。

然而,我更喜欢(这是我的经验法则,我不确定是一种“最佳做法”)让用户更改添加相关模型 - 在您的情况下捐赠 - 直接从“主要的“模型。我在我的应用程序中使用过这种方法,主要是考虑用户体验(不知道是不是你的情况)。因此,如果您处于捐赠者的编辑操作中,则在相应视图中,用户可以添加捐赠并将其发送到捐赠者的编辑操作。如果请求数据格式正确,您可以在此保存关联的模型:

data['Donor'] = array('id'=> XX);
data['Donation'] = array('id' => YY, 'amount' => blabla,...);
$this->Donor->save(data);

这会尊重MVC(没有丑陋的ClassRegistry :: Load ......)并且保持代码简单,避免从一个控制器跳到另一个控制器。 只是我的意见:D

问候。