我是cakephp的初学者,我正试图通过书签应用教程来理解它。
http://book.cakephp.org/3.0/en/quickstart.html 下面是SQL模式: CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
created DATETIME,
modified DATETIME
);
CREATE TABLE bookmarks (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
title VARCHAR(50),
description TEXT,
url TEXT,
created DATETIME,
modified DATETIME,
FOREIGN KEY user_key (user_id) REFERENCES users(id)
);
CREATE TABLE tags (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
created DATETIME,
modified DATETIME,
UNIQUE KEY (title)
);
CREATE TABLE bookmarks_tags (
bookmark_id INT NOT NULL,
tag_id INT NOT NULL,
PRIMARY KEY (bookmark_id, tag_id),
FOREIGN KEY tag_key(tag_id) REFERENCES tags(id),
FOREIGN KEY bookmark_key(bookmark_id) REFERENCES bookmarks(id)
);
下面是我在"bake all" ->
之后所做的- 我在我的应用程序中添加了一个用户,并为用户添加了书签和标签。
- 现在我正试图删除抛出SQL错误的用户,说它违反了外键约束作为书签指的用户。是有意义的。
- 问题在这里-我可以去删除书签没有任何错误,但在我看来,它应该抛出一个错误,因为bookmarks_tags指的是一个书签,这也违反了引用完整性。
所以有人能告诉我这是如何在内部工作。这是我第一次使用CakePHP和MVC,我试图了解它的内部工作
是默认情况下,如果主记录被删除,CakePHP首先从连接表中删除相关记录。这样做是因为在大多数情况下,如果主记录本身被删除,你不关心关联。
您可以通过在关联配置中将dependent
选项设置为false
来防止自动删除连接表记录。