CakePHP-如何在保存时将关联记录添加到模型中


CakePHP - How to add associated records to a model on save?

我正在使用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
                )
         )
)

如何在不干扰控制器的情况下实现我想要的目标?我想要我的生意逻辑上主要停留在模型上。

您需要使用deep来实现这一点。根据食谱:

保存$options的相关数据['deep']=true(自2.1起)

示例

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

查看食谱了解更多详细信息