cakePHP HABTM, я все неправильно понял? - PullRequest
0 голосов
/ 09 ноября 2011

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

Какая идея стоит за этим?Я не верю, что это ..
Итак, что я делаю не так?


Редактировать A

У меня есть форма, которая добавляет магазин к Stores Таблица.в хранилище есть столбец с именем owner_id, который связан с таблицей Users через отношение ownTo.

Существует также таблица с именем stores_users, в которой должны храниться менеджеры для каждого магазина с использованием отношения HABTM.

Для этой таблицы есть форма с полем электронной почты, которая соединяет пользователя с хранилищем путем сохранения записи непосредственно в таблицу stores_users.
Таким образом, полное сохранение HABTM нигде не выполняется,если я правильно понимаю термин.

Итак, мои вопросы:

  1. Стоит ли ожидать проблем с его использованием таким образом?
  2. Можете ли вы посоветовать мне, какэто, если мой метод не является правильным способом?
  3. Как я могу использовать сохраненные данные, используя $this->User->find(...), чтобы получить все хранилища, которыми может управлять пользователь?

1 Ответ

1 голос
/ 09 ноября 2011

Да, это поведение по умолчанию HABTM в cakephp, хотя это не для "каждой строки", а для "каждого сохранения HABTM".

это работает, ЕСЛИ вы всегда предоставляете все значения HABTM.и с запеченными представлениями в соответствии со спецификациями для такого HABTM все это работает "из коробки".

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

Пример:

IS: 1,3,6 (в БД для этого ключа)

NEW: 2,3,6 (из формы)

(торт удаляет 1,3,6 и добавляет 2,3,6)

=> в целомрезультат (забывая о разных первичных ключах): «1» удалено, «2» добавлено

, поэтому это может быть не самый щадящий способ, но, несомненно, самый простой и быстрый.

...