saveAll有许多没有';无法在CakePHP 2.0.6中工作


saveAll hasMany doesn't work in CakePHP 2.0.6

有关更多详细信息(控制器、模型等),请参阅Gist:https://gist.github.com/2017219

我的问题如下:
我有一个使用HTML Helper的普通表单。使用ajax,我添加了新的输入(文件)来上传动态图像

TipoImovel(或英文,PropertyType)
ImagemTipoImovel(或ImagePropertyType)

当我运行上传和验证数据所需的所有操作时,我会得到以下数组(saveAssociated它只是一个示例文本):

<?php 
// debug após sair do ImagemBehavior - responsável pelo upload
Array
(
    [TipoImovel] => Array
        (
            [empreendimento_id] => 2
            [tipo_id] => 1
            [chamada1] => <pre><span class="na">saveAssociated</span></pre>
            [chamada2] => <pre><span class="na">saveAssociated</span></pre>
            [chamada3] => <pre><span class="na">saveAssociated</span></pre>
            [descricao] => <pre><span class="na">saveAssociated</span></pre>
            [youtube_link] => saveAssociated
            [vimeo_embed] => saveAssociated
            [ativo] => 1
        )
    [ImagemTipoImovel] => Array
        (
            [0] => Array
                (
                    [tipo_imovel_id] => 
                    [imagem] => 65d7adc2c7ed519e489789fc3eb60e8a.jpg
                )
            [1] => Array
                (
                    [tipo_imovel_id] => 
                    [imagem] => f95bcebaecad405b2f7a50a2535d4c4b.jpg
                )
        )
)

之后,我尝试使用SaveAll,但由于以下错误而收费:

Notice (8): Array to string conversion [CORE/Cake/Model/Datasource/DboSource.php, line 964]
Database Error
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Array' in 'field list'
SQL Query: INSERT INTO `imagem_tipo_imoveis` (`tipo_imovel_id`, `imagem`, `modified`, `created`) VALUES (23, Array, '2012-03-11 17:17:14', '2012-03-11 17:17:14')
Notice: If you want to customize this error message, create app/View/Errors/pdo_error.ctp
Stack Trace
#0 /home/patrick/workspace/.../cakephp/lib/Cake/Model/Datasource/DboSource.php(436): PDOStatement->execute(Array)
#1 /home/patrick/workspace/.../cakephp/lib/Cake/Model/Datasource/DboSource.php(403): DboSource->_execute('INSERT INTO `im...', Array)
#2 /home/patrick/workspace/.../cakephp/lib/Cake/Model/Datasource/DboSource.php(967): DboSource->execute('INSERT INTO `im...')
#3 /home/patrick/workspace/.../cakephp/lib/Cake/Model/Model.php(1646): DboSource->create(Object(ImagemTipoImovel), Array, Array)
#4 /home/patrick/workspace/.../cakephp/lib/Cake/Model/Model.php(1955): Model->save(Array, Array)
#5 /home/patrick/workspace/.../cakephp/lib/Cake/Model/Model.php(2096): Model->saveMany(Array, Array)
#6 /home/patrick/workspace/.../cakephp/lib/Cake/Model/Model.php(1908): Model->saveAssociated(Array, Array)
#7 /home/patrick/workspace/.../cakephp/app/Controller/TipoImoveisController.php(44): Model->saveAll(Array)
#8 [internal function]: TipoImoveisController->admin_add()
#9 /home/patrick/workspace/.../cakephp/lib/Cake/Controller/Controller.php(473): ReflectionMethod->invokeArgs(Object(TipoImoveisController), Array)
#10 /home/patrick/workspace/.../cakephp/lib/Cake/Routing/Dispatcher.php(104): Controller->invokeAction(Object(CakeRequest))
#11 /home/patrick/workspace/.../cakephp/lib/Cake/Routing/Dispatcher.php(86): Dispatcher->_invoke(Object(TipoImoveisController), Object(CakeRequest), Object(CakeResponse))
#12 /home/patrick/workspace/.../cakephp/app/webroot/index.php(96): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#13 {main}

问题出在哪里

2012年3月12日21:59编辑

我做了一些测试,发现了以下内容:beforeValidate没有返回映像的名称,即他试图保存的第一个映像以便稍后在beforeValidate运行之前保存,所以他试图保存一个数组,然后只上传并返回映像名称。

现在的问题是:即使在hasMany关系中,如何在保存之前运行一些东西?

尝试在TipoImovel.php 中设置true

'dependent' => true,

感谢

尝试将saveAll更改为saveAssociated