0

ファイルのアップロードで登録を作成するアプリがあります。OK、ファイルのアップロードと作成された登録は問題ありません。

ユーザーがファイルを配置すると、更新が行われるようにしたい。そうでない場合は、ファイル パスを含むフィールドを更新しません。

しかし、このレジスタを編集する必要があります。編集時に、ファイルのアップロードでエラーが表示されます:

エラー: SQLSTATE[42S22]: 列が見つかりません: 1054 'フィールド リスト' の不明な列 '配列' SQL クエリ: UPDATE societario. attorneysSET nome= 'teste editor', empresa= '', filial= '', unidade= 'Energia', alcada= 'Até 10.000', validade= '123123111', arquivo= Array WHERE societario. attorneys. id= '83'

私の作成コントローラー:

if($this->request->is('post')){

$targetFolder = 'societario/app/webroot/uploads/'; // Relative to the root
$tempFile = $this->request->data['Attorney']['arquivo']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
$targetFile = rtrim($targetPath,'/') . '/' . $this->request->data['Attorney']['arquivo']['name'];;
        move_uploaded_file($tempFile,$targetFile);


        $this->Attorney->saveAll($this->request->data, array('fieldList' => array('nome','empresa','filial','unidade','validade', 'alcada', 'status')));
        $this->Attorney->updateAll(
array('arquivo' => "'".$this->request->data['Attorney']['arquivo']['name'] ."'",),
array('id' => $this->Attorney->id));

私の編集コントローラ:

編集: 編集コントローラーを変更しました。解決策は、次の回答にあります。

    $this->Attorney->id = $id;
    $this->set('poderes',$this->Attorney->Power->find('list', array('fields' => 'resumo')));

         if ($this->request->is('get')) {
            $this->request->data = $this->Attorney->read();
        } else {

            if ($this->Attorney->save($this->request->data)) {


            $this->Session->setFlash('Usuário editado com sucesso!', 'default', array('class' => 'flash_sucess'));
            $this->redirect(array('action' => 'usuarios'));
    }
}
4

2 に答える 2

0
arquivo = Array

配列はフィールドであると考えています...したがって、文字通り「配列」を保存したい場合は、単一引用符で囲みます。それ以外の場合は、$ を忘れたと思います。

編集-これはUPDATEステートメントにあると思います。

于 2013-08-16T15:22:54.557 に答える
0

解決策を見つけました!! ありがとう

私の編集コントローラ:

$this->Attorney->id = $id;
    $this->set('poderes',$this->Attorney->Power->find('list', array('fields' => 'resumo')));

         if ($this->request->is('get')) {
            $this->request->data = $this->Attorney->read();

        } else {

            if ($this->Attorney->save($this->request->data, array('fieldList' => array('nome','empresa','filial','unidade','validade', 'alcada', 'status')))) {

            if(!empty($this->request->data['Attorney']['arquivo']['name'])) {

                $targetFolder = 'societario/app/webroot/uploads/'; // Relative to the root
                $tempFile = $this->request->data['Attorney']['arquivo']['tmp_name'];
                $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
                $targetFile = rtrim($targetPath,'/') . '/' . $this->request->data['Attorney']['arquivo']['name'];;
                move_uploaded_file($tempFile,$targetFile);

                $this->Attorney->updateAll(
                array('arquivo' => "'".$this->request->data['Attorney']['arquivo']['name'] ."'",),
                array('id' => $this->Attorney->id));
                $this->Session->setFlash('procuração editada com sucesso!', 'default', array('class' => 'flash_sucess'));
            $this->redirect(array('action' => 'usuarios'));
            }
            $this->Session->setFlash('Usuário editado com sucesso!', 'default', array('class' => 'flash_sucess'));
            $this->redirect(array('action' => 'usuarios'));
    }
}
于 2013-08-16T15:43:07.400 に答える