Я использую очень встроенную базу данных с приложением CakePHP, и пока мои многомодельные представления и контроллеры работают нормально. У меня есть таблица в единственном числе (Entity
), которая имеет id
на нескольких других таблицах в качестве внешнего ключа entity_id
Некоторые таблицы являются отношениями один к одному (например, Company
- это одно Entity
), а некоторые - один ко многим (Entity
может иметь несколько Addresses
) и т. Д.
Я не буду / не могу изменить модель базы данных , так что это структура.
Я использовал saveAll()
для сохранения данных в этих таблицах с такими именами ввода, как:
Entity.type='x' (hidden inside the view)
Company.name
Address.0.street
Address.0.city
Address.1.street
Address.1.city
... and so on ...
и мое спасение все делает всю тяжелую работу, BEGIN TRANSACTION
, все INSERT
с и окончательный COMMIT
...
Но теперь я создал EntityCategory
, который является отношением n к n, и создал полное HABTM
отношение внутри модели.
Это работает, когда я save()
это только отношение HABTM
, и сохраняет все, когда я использую saveAll()
(как и прежде), за исключением отношения HABTM
.
Я что-то упустил? Как мне заставить это работать правильно? Сегодня я использую следующий код:
if (!empty($this->data)) {
$this->Entity->saveAll($this->data);
$this->Entity->save($this->data);
}
saveAll()
сохраняет все данные в нескольких таблицах, сохраняет идентификатор в Entity->id
, а save()
сохраняет отношения HABTM
, но я не уверен, правильно ли это или может ли это вызвать проблемы, если Я изменяю некоторую структуру / модель.
Это лучший способ его использовать? Есть ли правильный способ сохранить эти отношения внутри CakePHP? Что ваш опыт / знания могут сказать мне?