我有三个模型主题、颜色和主题颜色(映射具有不同颜色的主题)
结构如下:
主题(id、名称、属性、图像)
颜色(ID、名称、代码、图像)
ThemeColor(主题id,颜色id,预览); // 例如。预览 => x 主题,具有 a、b、c 颜色及其相关图像 //
我已经烘焙了所有这些模型、控制器和视图,
一切工作正常,除了我无法在 ThemeColor 模型中保存[预览]图像。
它与 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() 但没有成功。是否有可能实现我想要实现的目标,或者我必须手动完成。
请指导。
不要使用 HABTM
处理具有额外属性的“拥有并属于多个”关系的最简单方法是遵守以下规则:
当链接表有超过2个字段时:将其设为模型
这意味着转换这个关系:
Theme <-habtm-> Color
Into:
Theme <-hasmany- ThemeColor
ThemeColor -belongsTo-> Color
ThemeColor -belongsTo-> Theme
这为您提供了更多控制权和更简单的代码/逻辑。当习惯关系适合你时,你仍然可以使用它,而当它不适合你时,你就不能使用习惯关系。
保存时的数据结构将是:
array(
'Theme' => array(...),
'ThemeColor' => array(
array('color_id' => x, 'preview' => y),
...
)
)
这方面有更详细的注释在文档中 http://book.cakephp.org/2.0/en/models/saving-your-data.html#what-to-do-when-habtm-becomes-complicated.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)