我有三个模特主题,颜色和主题颜色(用不同颜色映射主题)
结构如下:
主题(id,name,properties,image)
颜色(id,名称,代码,图像)
ThemeColor(theme_id,color_id,preview); //例如preview => 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()但是没有用。是否有可能实现我的目标,或者我必须手动完成。
请指导。
答案 0 :(得分:4)
使用额外属性处理has-and-belongs-to-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),
...
)
)
有关此in the documentation的详细说明。