CakePHP是否在代码级别处理FK或者我是否应该将FK添加到我的数据库中?

时间:2009-07-12 05:06:29

标签: mysql cakephp foreign-keys

如果我使用ON DELETE CASCADE添加FK并且这样吗?

,我会在以后遇到后果吗?

如果没有,我应该在MySQL中为CakePHP使用什么命名约定?

2 个答案:

答案 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');
}
?>