如果我使用ON DELETE CASCADE添加FK并且这样吗?
,我会在以后遇到后果吗?如果没有,我应该在MySQL中为CakePHP使用什么命名约定?
答案 0 :(得分:7)
您可以看到here列出的命名惯例。
Cake根据您的model associations处理代码中的FK /关系,并通过命名约定处理隐含的关联。您可以通过在数据库级别定义FK关系来添加额外的“强制执行”层。如果你的数据库尊重这些,那么你就更难自拔,但这并不是必需的。它增加了在Cake的模型和数据库中保持关系同步的额外开销。
答案 1 :(得分:1)
在CakePHP中,如果在数据库级别指定FK并不重要,但是如果这样做,它将按照您在典型数据库操作中的预期行事。
如果您有2个表 - 每个学生都属于某个课程的学生和课程,您可以这样说:
<?php
class Student extends AppModel {
var $name = 'Student';
var $belongsTo = array(
'Course' => array(
'className' => 'Course',
'foreignKey' => 'course_id'
)
);
}
?>
约定是在它所属的模型的单数类名的后面附加“_id”。
如果您使用CakePHP的命名约定,则可以声明:
<?php
class Student extends AppModel {
var $name = 'Student';
var $belongsTo = array('Course');
}
?>