Ну, из того, что кажется вашим кодом, он делает именно то, о чем вы говорите.Он берет user.id
и сохраняет новый профиль вместе с ним.
Нет никаких условий, установленных на $this->User->Profile->save()
внешним видом вашего кода.Вам нужно также указать, в каком профиле сохранять изменения.В противном случае Cake подумает, что вы хотите сохранить новый.Таким образом, если у вас есть идентификатор профиля в скрытом поле формы, он должен выглядеть примерно так:
$this->User->Profile->save(
$this->data,
array(
'conditions' => array(
'Profile.id' => $this->data['Profile']['id']
)
)
);
Теперь вы должны обновлять определенный профиль, а не просто сохранять новый каждый раз.
Дайте мне знать, работает ли он или нет.
Редактировать:
Подумав немного, очень странно, что вы даже можете сохранить два профиля с одинаковым идентификатором пользователя.Это должно было произойти сбой на уровне базы данных, прежде чем он был даже сохранен.Я бы порекомендовал также настроить уникальный индекс на profiles.user_id
, чтобы избежать проблем в будущем, когда у пользователя несколько профилей.
(Если не предполагалось, что поведение будет иметь несколько профилей с одним и тем же пользователем, в этом случае игнорируйте редактирование!)