CakePHP Пустой внешний ключ - PullRequest
3 голосов
/ 17 марта 2011

У меня есть ситуация, когда пользователя просят заполнить анкету о здании.Модель Building может hasMany Questionnaire, хотя, по крайней мере, на данный момент достаточно, чтобы Building hasOne Questionnaire.Что меня беспокоит, так это то, что первый не работает, а второй работает, и я не могу понять, почему.

Ключи следуют соглашению: на buildings.id есть ссылка во внешнем ключе из questionnaires.building_id.В сценарии hasMany внешний ключ просто игнорируется при попытке вставить запись questionnaires:

INSERT INTO `questionnaires` (`deleted`, `modified`, `created`, `id`) VALUES (1, '2011-03-17 10:32:24', '2011-03-17 10:32:24', '4d821b78-7314-4ab4-a532-226f6e891b5e')

Нет никакого упоминания о building_id.Однако, как только я перехожу Questionnaire из массива hasMany в массив hasOne, все это прекрасно работает.

Любое понимание внутренней магии было бы замечательно.Я не могу себе представить, что я первый, кто столкнулся с этим, но я никогда не помню, сталкивался с этим раньше.

Спасибо.

ОБНОВЛЕНИЕ

Так что я думаю, что нашел ответ.В моей форме, поскольку я действительно определяю один вопросник (хотя я мог поддерживать несколько), я определял свой ввод как Questionnaire.deleted, который отлично работает для hasOne, но не так сильно для hasMany.Для последнего я должен создать вход для Questionnaire.0.deleted.Я создал формы для бесчисленных hasMany отношений, где я должен был создать только одно за раз, и клянусь, я не могу вспомнить, чтобы когда-либо делал это раньше.Это всегда было требованием?Может быть, мне просто нужно на какое-то время сложить тяжелые вещи.Sheesh.

1 Ответ

0 голосов
/ 18 марта 2011

Роб Уилкерсон,

это может означать, что это всегда было требованием.Я предполагаю, что причиной столкновения с этой проблемой является смесь написанного от руки и сгенерированного (cake bake) кода, что происходит естественным образом.

Так что если кто-то не изменяет требования во время разработки и начинает ссгенерированный код, можно никогда не присматриваться к hasMany, связанному 0s, и все остается в порядке.

Imho, фреймворк может удалить этот источник ошибки, обрабатывая hasOne как подмножество hasMany, когда дело доходит до форм.Таким образом, обновление представлений может быть опущено, когда необходимо изменить отношения.

Может быть, указана проблема с разработчиками тортов?

...