Сохранение в модели, связанной с другим экземпляром этой модели в CakePHP 1.3 - PullRequest
0 голосов
/ 26 января 2011

Я относительно новичок в торте, и еще раз мне нужно обдумать, как это происходит, чтобы получить то, что я хочу.Мне бы очень хотелось узнать «правильный» способ делать то, что мне нужно.

Я строю систему «производительности», которая используется каждый месяц для проверки того, как кто-то действовал против своих целей с прошлого месяца..

В обзоре этого месяца устанавливаются новые цели, а также записывается результат по сравнению с прошлым месяцем.

У меня есть модель обзора, которая имеет много целей.

В представлении редактирования дляОбзор за эти месяцы Я отображаю некоторые данные из Обзора за последний месяц и некоторые поля из Целей, связанных с Обзором за последний месяц.

Мне нужно сохранить результат для каждого из Целей за последние месяцы, а также установитьЦели этого месяца тоже - поэтому я сохраняю данные в Цели, связанные с текущим Обзором, а также еще одно.

Когда я пытаюсь сохранить «несвязанные» Цели, CakePHP заставляет review_id быть идентификаторомтекущего - я даже пытался зацикливаться в обратном вызове Review :: afterSave и проверять каждый review_id - хотя я могу отправить правильное значение review_id в Goal-> save, база данных по-прежнемуобновляется с текущим идентификатором обзора, а не с тем, который я установил.

Может кто-нибудь сказать мне «торт» способ сохранения в моделях, связанных с другим экземпляром текущей модели?Это вообще возможно?

1 Ответ

0 голосов
/ 27 января 2011

Хорошо, возможно, это не самый эффективный способ сделать это, но я нахожусь на крайнем сроке.

Итак, вместо получения обзора за прошлый месяц, я создал еще одно отношение "hasMany", используяfinderQuery, у которого есть подвыбор, чтобы найти идентификатор запроса за последние месяцы, и используйте его для выбора целей с этим review_id.Он использует {$__cakeID__$}, чтобы найти идентификатор текущего Обзора, как описано здесь:

http://book.cakephp.org/view/1039/Associations-Linking-Models-Together#hasMany-1043

Поскольку все связано друг с другом так, как понимает Cake, все просто обновляется автоматическиsaveAll.

Это означает, что у меня есть нелепый запрос вспомогательного выбора, относящийся к последним месяцам. Цели этого обзора месяцев, но это работает.

Однажды я пойму, как его оптимизироватьне заставить мою базу данных плакать ....

...