如果我加载一个用户,那么该用户的所有帖子也会被加载?
是的,CakePHP 将加载所有相关数据,除非您取消绑定或绑定模型或更改您正在使用的模型的递归属性。
但是,CakePHP 在保存新条目方面真的没有做太多事情吗?例如:如果我创建一个新帖子,那么我必须手动为相关用户指定 user_id 字段,CakePHP 不会以某种方式自动执行它?
您必须为用户指定 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'));
}
这将等同于前一种情况,因为您正在使用用户数据加载用户模型并为该用户保存一个帖子。