Работает ли CakePHP с FK на уровне кода или я должен добавить FK к моей базе данных? - PullRequest
4 голосов
/ 12 июля 2009

Буду ли я страдать от последствий позже, если добавлю FK с ON DELETE CASCADE и тому подобное?

Если нет, какое соглашение об именах я должен использовать для FK в MySQL для CakePHP?

Ответы [ 2 ]

7 голосов
/ 12 июля 2009

Здесь вы можете ознакомиться с обозначенными именами здесь .

Cake обрабатывает FK / отношения в коде, основываясь на ваших модельных ассоциациях и подразумеваемых ассоциациях по соглашениям об именах. Вы можете добавить дополнительный уровень «принудительного применения», определив отношения FK на уровне базы данных. Если ваша база данных соблюдает их, труднее застрелить себя, но в этом нет необходимости. Это добавляет дополнительную нагрузку на синхронизацию отношений в моделях Cake и в базе данных.

1 голос
/ 12 июля 2009

В 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');
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...