См. Gist для более подробной информации (контроллер, модель и т. Д.): https://gist.github.com/2017219
Моя проблема заключается в следующем:У меня есть нормальная форма с использованием помощника HTML.С помощью ajax я добавляю новые входные данные (файл) для загрузки динамических изображений.
ТипоИмовел (или по-английски, PropertyType) ImagemTipoImovel (или ImagePropertyType)
Когда я запускаю все операции, необходимые для загрузки и проверки данных, я получаю следующий массив ( saveAssociated это просто пример текста ):
<code><?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>
[chamada2] =>
<span class="na">saveAssociated</span>
[chamada3] =>
<span class="na">saveAssociated</span>
[descricao] =>
<span class="na">saveAssociated</span>
[youtube_link] => saveAssociated [vimeo_embed] => saveAssociated [ativo] => 1) [ImagemTipoImovel] => Массив ([0] => Массив ([tipo_imovel_id] => [imagem] => 65d7adc2c7ed519e489789fc3eb60e8a.jpg) [1] => Массив ([tipo_imovel_id]) => [imagem2bb) = 505b6c0a5f5a5f5a5b5c0a5a5a5f5a0b0c0a5a5f5a0c0a5a0a0a5f5a0a0a5a5a0a0a0a5a5a0c0a5a0c0a5a0c0a5a0c0a5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa к за т ь.
После этого я пытаюсь использовать 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}
В чем проблема?
РЕДАКТИРОВАТЬ 12/03/2012 21: 59h
Я провел несколько тестов и обнаружил следующее: beforeValidate не возвращает имя изображения , т. Е. первое, что он пытается сохранить для последующего запуска, до запуска Validate ,поэтому он пытается сохранить массив, только чтобы затем загрузить и вернуть только имя изображения.
Теперь возникает вопрос: как запустить что-то перед сохранением, даже в отношении hasMany?