据我所知,模型关联有助于阅读/查找相关数据。因此,如果我加载用户,那么该用户的所有帖子也将被加载?但CakePHP在保存新条目方面做得不是很正确吗?例如:如果我创建一个新帖子,那么我必须手动为相关用户指定user_id字段,CakePHP不会以某种方式自动执行此操作?手动我的意思是在这个答案中明确定义mentor_id:CakePHP model associations table w/data and new table
为什么有必要在保存时“提及”两种型号? $ this-> Mentor-> Student->保存($ student)示例。这是一种跟踪双向关联的方法吗?
答案 0 :(得分:1)
如果我加载用户,那么该用户的所有帖子也会被加载?
是的,CakePHP将加载所有相关数据,除非您unbind或bind模型或更改您正在使用的模型的递归属性。
但CakePHP在保存新条目方面做得不是很正确吗? 示例:如果我创建一个新帖子,那么我必须指定user_id 手动相关用户的字段,CakePHP不会这样做 自动某种程度?
您必须指定用户的ID,然后执行保存,当您从具有指定ID的模型中保存时,它将处理其余的ID。例如,假设您有一个Post和User模型,并且用户使用Auth:
登录 $this->request->data['Post']['user_id'] = $this->Auth->user('id');
if ($this->Post->save($this->request->data)) {
$this->Session->setFlash('Your post has been saved.');
$this->redirect(array('action' => 'index'));
}
因此,提及这两种模型并不是必需的,如果你提到这两种模式,你可以再做一次,以帖子和用户为例。
$this->User->read(null, $this->Auth->user('id'));
if ($this->User->Post->save($this->request->data)) {
$this->Session->setFlash('Your post has been saved.');
$this->redirect(array('action' => 'index'));
}
这与前一种情况相同,因为您正在使用用户数据加载用户模型并为该用户保存帖子。
答案 1 :(得分:0)
我假设您正在使用belongsTo关系,但我认为它可能是在食谱上描述的任何类型
如果我加载用户,那么该用户的所有帖子也会被加载?
是的,如果您设置了正确的关系(belongsTo,hasA等),这将由Cake自动处理。
但CakePHP在保存新条目方面做得不是很正确吗? 示例:如果我创建一个新帖子,那么我必须指定user_id 手动相关用户的字段,CakePHP不会这样做 自动某种程度?
我相信这是用saveAll, saveAssociated, etc.方法处理的,但我还没有遇到使用它的方案
为什么有必要在保存时“提及”两种型号? $ this-> Mentor-> Student->保存($ student)示例。这是一种保持的方式 跟踪双向关联??
这是因为您正在保存主模型及其依赖项(同样取决于您如何建立关系),因此您需要明确说明。其他方法是导入StudenController(根据您的示例)和(after constructing the classes)调用保存方法$studentController->Student->save($student)
希望这有帮助