Intereting Posts
Вставка данных через ajax в базу данных mysql Разбор заголовков электронной почты (похожих на RFC822) Подписки WooCommerce – проверьте, есть ли у продукта активный абонент Как вы генерируете случайное число по 32-битовому пределу в PHP? Лучшие рекомендации: какой лучший способ для создания верхних и нижних колонтитулов? PHP – хранить информацию без базы данных NO В php делает «return false» делать что-либо после выражения echo? Любая идея, почему я должен дважды щелкнуть кнопку выхода из системы, чтобы выйти из системы? PHP-скрипт для загрузки файла, не работающего в IE Регулярное выражение для выборочной зачистки HTML Joomla добавить статью через php-скрипт Ошибка создания приложения Расчет идеального веса, учитывая пол и высоту. Как мы можем преобразовать int в дюймы? Пусть браузеры кэшируют мою динамическую таблицу стилей PHP Безопасные возможности загрузки изображений пользователей в PHP Проверить правильность имени столбца SQL

Cakephp сохраняет дополнительный атрибут в отношении HABTM

У меня есть три темы моделей, цвет и ThemeColor (который отображает темы, доступные с разными цветами)

Структурированные как:

Тема (id, имя, свойства, изображение)

Цвет (id, имя, код, изображение)

ThemeColor (theme_id, color_id, предварительный просмотр); // например. Preview => x тема с цветами a, b, c и связанным ими образом //

Я испек все эти модели, контроллеры и представления,

Все работает хорошо, но я не могу сохранить изображение [preview] в ThemeColor Model.

Это связано с hasAndBelongToMany.

Array ( [Theme] => Array ( [name] => Black and blue [theme] => black-blue [description] => [status] => 1 [thumb] => Array ( [name] => Koala.jpg [type] => image/jpeg [tmp_name] => F:\Xampp\tmp\phpEBE7.tmp [error] => 0 [size] => 780831 ) ) [Color] => Array ( [Color] => Array ( [0] => 1 ) [Preview] => Array ( [0] => test.png ) ) ) 

Я попробовал saveAll (), но это не сработало. Возможно ли, что я добиваюсь, или мне придется просто сделать это вручную.

Пожалуйста, направляйте.

Solutions Collecting From Web of "Cakephp сохраняет дополнительный атрибут в отношении HABTM"

Не используйте HABTM

Самый простой способ обработки отношений has-and-many-many с дополнительными атрибутами – подчиняться этому правилу:

Когда таблица ссылок содержит более двух полей: сделайте модель

Это означает преобразование этого отношения:

 Theme <-habtm-> Color 

В:

 Theme <-hasmany- ThemeColor ThemeColor -belongsTo-> Color ThemeColor -belongsTo-> Theme 

Это дает вам больше контроля и более простой код / ​​логику. По-прежнему можно использовать отношение habtm, когда оно вам подходит, а не когда это не так.

Тогда структура данных при сохранении будет:

 array( 'Theme' => array(...), 'ThemeColor' => array( array('color_id' => x, 'preview' => y), ... ) ) 

Более подробная информация об этом содержится в документации .