Ich habe drei Modelle: Projekt, Benutzer, ProjectsUser. Die Tabelle ProjectsUser wird für HABTM-Beziehungen zwischen Project und User verwendet. Dies ist() -Methode des Projektmodells entfernen:Falsches Verhalten der Methode delete()
function remove($project_id, $user_id)
{
/*
* Проверяем, относится ли выбранный проект к пользователю
*/
// $data = $this->read('', $project_id);
//
// if($data['User'][0]['id'] != $user_id)
// {
// return false;
// }
/*
* Если проект принадлежит пользователю, то удалить его
*/
$result = $this->delete($project_id);
if(!$result)
{
return false;
}
return true;
}
und remove() Methode der Projekte Controller:
function remove($project_id)
{
/*
* Пробуем удалить проект
*/
$user_id = $this->Session->read('Auth.User.id');
$result = $this->Project->remove($project_id, $user_id);
/*
* Если возникли ошибки, то отправить их в буфер сообщений
о результате операций
*/
if(!$result)
{
$this->Session->setFlash('Возникли проблемы при
удалении проекта, попробуйте позже');
$this->redirect(array(
'controller' => 'projects',
'action' => 'index',
));
}
$this->Session->setFlash('Проект успешно удален');
// $this->redirect(array(
// 'controller' => 'projects',
// 'action' => 'index',
// ));
}
Also, beim Debuggen fand ich, dass Kuchen zwei Anfragen zum Löschen macht() Methode: Löschen Projekt von Projekt-ID aus Projekten Tabelle und die nächste: LÖSCHEN VON projects_users
WHERE projects_users
. user_id
= 4 Dies bedeutet, dass, wenn der Benutzer zwei Projekte hat, nach der Abfrage alle Relationen in der Tabelle projects_users für die Benutzer-ID gelöscht werden. Wie kann ich das beheben und warum Cake löscht von projects_users von user_id nicht von project_id?
können Sie das Modell Zuordnungscode für User & Projekt veröffentlichen. – Leo
Verwenden Sie 'return $ this-> delete ($ project_id);' anstelle dieses überflüssigen 6-Linien-Konstrukts, das Sie dort haben. :) – deceze