0

我正在使用 CakePHP 2.3,并且正在尝试找到执行关联数据保存的正确方法。我已经设置了一个保存图片数据的图像上传表单,但同时我还想处理保存的图像,以便在保存时我的应用程序应该检查文件并提取所有 exif 数据并将该标签添加为关联的模型标签。

我的关系是

Picture hasMany Tags
Tag belongsTo Picture

现在我正在尝试使用 Picture beforeSave 回调以编程方式将新记录添加到数据数组中,但它不起作用(它没有保存添加的数据)。

图片控制器

$this->Picture->create();           
$this->Picture->saveAll($this->request->data);

beforeSave 之后的数据数组

Array
(
    [Picture] => Array
        (
            [field1] => foo
            [field2] => bar
        )

    [Tag] => Array
        (
            [0] => Array
                (
                    [tag] => example
                    [value] => example
                )

            [1] => Array
                (
                    [tag] => example 2
                    [value] => example 2
                )
         )
)

如何在不过多使用控制器的情况下实现我想要的效果?我希望我的业务逻辑主要停留在模型上。

4

1 回答 1

0

您需要使用 deep 才能实现此目的。根据食谱:

使用 $options['deep'] = true 保存关联数据(从 2.1 开始)

例子

$Model->saveMany($data, array('deep' => true));
$Model->saveAssociated($data, array('deep' => true));

查看食谱以获取更多详细信息

于 2013-09-03T21:14:14.387 回答