php - Cakephp 在 HABTM 关系中保存额外的属性

标签 php cakephp

我有三个模型 Theme、Color 和 ThemeColor(映射具有不同颜色的主题)

结构如下:

主题(id、名称、属性、图像)

颜色(ID、名称、代码、图像)

ThemeColor(主题id,颜色id,预览);//例如。预览 => x 主题,具有 a、b、c 颜色及其相关图像//

我已经烘焙了所有这些模型、 Controller 和 View ,

一切工作正常,除了我无法在 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

处理具有额外属性的“拥有并属于多个”关系的最简单方法是遵守以下规则:

When a link table has more than 2 fields: make it a model

这意味着转换这个关系:

Theme <-habtm-> Color

进入:

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

这为您提供了更多控制权和更简单的代码/逻辑。当习惯关系适合你时,你仍然可以使用它,而当它不适合你时,你就不能使用习惯关系。

保存时的数据结构将是:

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

关于此 in the documentation 有更详细的注释.

关于php - Cakephp 在 HABTM 关系中保存额外的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17442465/

相关文章:

javascript - 使用 PHP 获取/读取 Javascript cookie

php - WebSocket 错误:net::ERR_SSL_PROTOCOL_ERROR

php - cakePHP- SQL- 在 sql 中添加来自不同表的值

php - 在考虑 "full stops"的情况下截断 html 文本(在 CachePHP TextHelper->truncate 中)

php - CakePHP HABTM 条件

php - 如何将版权和作者信息添加到用 PHP 创建的图像中?

php - Android onScroll 从 MySQL/PHP/JSON 加载更多结果

php - 一对多关系的 Symfony2 createQueryBuilder

php - cakephp中可选的belongsTo关系

validation - CakePHP:为什么没有显示验证错误?