Filter in CAKEPHP 2.0

Asked

Viewed 123 times

0

Talk guys, I’m having an error in my ['Filter']['Uf'] search filter and I don’t know how to solve.

My controller has the following check:

    $this->loadModel('User');
    $this->loadModel('Conta');
    $this->loadModel('Unidade');
    $this->loadModel('Periodicidade');
    $this->loadModel('AgendamentoFinanceiro');
    $this->loadModel('Entidade');
    $this->loadModel('EntidadesEndereco');

    $arrayConditions    = array();
    $arrayContas        = array();
    $total_a_receber    = 0;

    $arrayConditions['AND']['AgendamentoFinanceiroParcela.situacao'] = 'A'; // apenas os agendados
    $arrayConditions['AND']['AgendamentoFinanceiroParcela.tipo <>'] = 'S'; // diferente de saídas

    //se foi passado um parametro informando a agenda financeira
    if (!empty($agendamento_financeiro_id) && $agendamento_financeiro_id > 0) {
        //gera as proximas parcelas do agendamento informado:
        $this->AgendamentoFinanceiro->gerar_parcelas($agendamento_financeiro_id);
        //adiciona esta condição no filtro
        $arrayConditions['AND']['AgendamentoFinanceiroParcela.agendafinanceira_id'] = $agendamento_financeiro_id;
    }

    if(isset($this->params['named']['todos'])) {
        $this->data = array();
        $this->Session->delete('AgendamentoFinanceiroParcelasReceber');
    }
    if (!empty($this->data)) { 
        if (!empty($this->data['Filtro']['unidade_id'])) {
            $arrayConditions['OR']['ContaOrigem.unidade_id'] = $this->data['Filtro']['unidade_id'];
            $arrayConditions['OR']['ContaDestino.unidade_id'] = $this->data['Filtro']['unidade_id'];
            $arrayContas = $this->Conta->find(
                'list', array(
                'conditions' => array(
                    'unidade_id' => $this->data['Filtro']['unidade_id']
                ),
                'fields' => array('id', 'nome'),
                'recursive' => -1
            ));
        }
        if(isset($this->data['Filtro']['conta_id']) && !empty($this->data['Filtro']['conta_id'])){
            $arrayConditions['OR']['AgendamentoFinanceiro.conta_origem_id']     = $this->data['Filtro']['conta_id'];
            $arrayConditions['OR']['AgendamentoFinanceiro.conta_destino_id']    = $this->data['Filtro']['conta_id'];
            unset($arrayConditions['OR']['ContaOrigem.unidade_id']);
            unset($arrayConditions['OR']['ContaDestino.unidade_id']);
        }
        if (isset($this->data['Filtro']['entidade_id']) && !empty($this->data['Filtro']['entidade_id'])){ 
            $arrayConditions['AND']['AgendamentoFinanceiro.entidade_id'] = $this->data['Filtro']['entidade_id'];
        }
        if (isset($this->data['Filtro']['uf']) && !empty($this->data['Filtro']['uf'])){ 
            $arrayConditions['AND']['EntidadesEndereco.uf'] = $this->data['Filtro']['uf'];
        }
        if(isset($this->data['Filtro']['situacao']) && !empty($this->data['Filtro']['situacao'])){
            $arrayConditions['AND']['AgendamentoFinanceiroParcela.situacao'] = $this->data['Filtro']['situacao'];
            if($this->data['Filtro']['situacao'] == 'V'){ // se foi escolhido 'vencido':
                $arrayConditions['AND']['AgendamentoFinanceiroParcela.situacao'] = 'A';
                $arrayConditions['AND']['AgendamentoFinanceiroParcela.data_vencimento <'] = date('Y-m-d');
            }
        }
        if (isset($this->data['Filtro']['data_inicial']) && !empty($this->data['Filtro']['data_inicial'])){
            $arrayConditions['AND']['AgendamentoFinanceiroParcela.data_vencimento >='] = $this->Mswi->formatarData($this->data['Filtro']['data_inicial']);
        }
        if (isset($this->data['Filtro']['data_final']) && !empty($this->data['Filtro']['data_final'])){
            $arrayConditions['AND']['AgendamentoFinanceiroParcela.data_vencimento <='] = $this->Mswi->formatarData($this->data['Filtro']['data_final']);
        }
    }

    $params = $this->Mswi->autoPaginate($this->params, 'AgendamentoFinanceiroParcela.data_vencimento', 'ASC', $arrayConditions);

    $this->AgendamentoFinanceiroParcela->bindModel(array(
        'hasMany' => array(
            'Anexo' => array(
                'className' => 'Anexo',
                'foreignKey' => 'agendamento_parcela_id'
            )
        )
    ));

Ai have the conditions and debugging the code he gives me the indexes correctly including me returns the states of each record all straight

if ((isset($this->params['ext']) && $this->params['ext'] == 'pdf') || isset($this->params['named']['excel'])) {
        $AgendamentoFinanceiroParcelasReceber = $this->AgendamentoFinanceiroParcela->find('all', 
            array(
                'conditions'    => $params['conditions'],
                'order'         => array($params['sort'] => $params['direction']),
                'contain'       => array(
                    'AgendamentoFinanceiro' => array(
                        'CentroDeCusto' => array(
                            'fields' => array('id', 'numero', 'nome', 'situacao')
                        ),
                        'fields' => array('id', 'tipo', 'situacao', 'numero_parcelas', 'periodicidade_id'),
                    ),
                    'Entidade' => array(
                        'fields' => array('id', 'nome_principal', 'nome_secundario', 'situacao')
                    ),
                    'ContaDestino' => array(
                        'fields' => array('id', 'nome', 'contatipo_id', 'situacao')
                    ),
                    'ContaOrigem' => array(
                        'fields' => array('id', 'nome', 'contatipo_id', 'situacao')
                    ),
                    'PlanoDeConta' => array(
                        'fields' => array('id', 'numero', 'nome', 'situacao')
                    ),
                    'LancamentoFinanceiro' => array(
                        'fields' => array('id', 'agendamento_parcela_id', 'valor', 'tipo', 'situacao', 'observacoes'),
                        'CentroDeCusto' => array(
                            'fields' => array('id', 'numero', 'nome', 'situacao')
                        ),
                        'Entidade' => array(
                            'fields' => array('id', 'nome_principal', 'nome_secundario', 'situacao')
                        ),
                        'ContaDestino' => array(
                            'fields' => array('id', 'nome', 'contatipo_id', 'situacao')
                        ),
                        'ContaOrigem' => array(
                            'fields' => array('id', 'nome', 'contatipo_id', 'situacao')
                        ),
                        'PlanoDeConta' => array(
                            'fields' => array('id', 'numero', 'nome', 'situacao')
                        )
                    ),
                    'AgendamentoFinanceiroParcelaFatura' => array(
                        'Fatura' => array(
                            'Boleto' => array(
                                'fields' => array('id')
                            ),
                            'fields' => array('id', 'formadepagamento_id')
                        ),
                        'fields' => array('id', 'agendamento_financeiro_parcela_id', 'fatura_id')
                    ),
                    'Anexo' => array(
                        'fields' => array(
                            'id'
                        )
                    )
                ),
                'fields' => array(
                    'id',
                    'data_vencimento',
                    'valor',
                    'descricao',
                    'situacao',
                    'tipo',
                    'parcela',
                    'entidade_id',
                    'conta_origem_id',
                    'conta_destino_id',
                    'planodeconta_id',
                    'numero',
                    'observacoes',
                    'email_enviado',
                    'lancamentofinanceiro_id'
                )
            )
        );
    } else {
        $this->paginate = array(
            'conditions'    => $params['conditions'],
            'order'         => array($params['sort'] => $params['direction']),
            'page'          => $params['page'],
            'joins'         => array(
                array(
                    'table'         => 'agendamentos_financeiros_parcelas_faturas',
                    'alias'         => 'AgendamentoFinanceiroParcelaFatura',
                    'type'          => 'LEFT',
                    'conditions'    => array(
                        'AgendamentoFinanceiroParcelaFatura.agendamento_financeiro_parcela_id = AgendamentoFinanceiroParcela.id',
                    )
                ),
                array(
                    'table'         => 'agendamentos_financeiros',
                    'alias'         => 'AgendamentoFinanceiro',
                    'type'          => 'LEFT',
                    'conditions'    => array(
                        'AgendamentoFinanceiroParcela.agendafinanceira_id = AgendamentoFinanceiro.id',
                    )
                ),
                array(
                    'table'         => 'lancamentos_financeiros',
                    'alias'         => 'LancamentoFinanceiro',
                    'type'          => 'LEFT',
                    'conditions'    => array(
                        'AgendamentoFinanceiroParcela.lancamentofinanceiro_id = LancamentoFinanceiro.id',
                    )
                ),
                array(
                    'table'         => 'plano_de_contas',
                    'alias'         => 'PlanoDeConta',
                    'type'          => 'LEFT',
                    'conditions'    => array(
                        'AgendamentoFinanceiroParcela.planodeconta_id = PlanoDeConta.id',
                    )
                ),
                array(
                    'table'         => 'entidades',
                    'alias'         => 'Entidade',
                    'type'          => 'LEFT',
                    'conditions'    => array(
                        'AgendamentoFinanceiroParcela.entidade_id = Entidade.id',
                    )
                ),
                array(
                    'table'         => 'entidades_enderecos',
                    'alias'         => 'EntidadesEndereco',
                    'type'          => 'LEFT',
                    'conditions'    => array(
                        'EntidadesEndereco.entidade_id = Entidade.id' ,
                    )
                ),
                array(
                    'table'         => 'contas',
                    'alias'         => 'ContaOrigem',
                    'type'          => 'LEFT',
                    'conditions'    => array(
                        'AgendamentoFinanceiroParcela.conta_origem_id = ContaOrigem.id',
                    )
                ),
                array(
                    'table'         => 'contas',
                    'alias'         => 'ContaDestino',
                    'type'          => 'LEFT',
                    'conditions'    => array(
                        'AgendamentoFinanceiroParcela.conta_destino_id = ContaDestino.id',
                    )
                ),
                array(
                    'table'         => 'anexos',
                    'alias'         => 'Anexo',
                    'type'          => 'LEFT',
                    'conditions'    => array(
                        'AgendamentoFinanceiroParcela.id = Anexo.agendamento_parcela_id',
                    )
                ),
            ),
            'fields' => array(
                'AgendamentoFinanceiroParcela.id',
                'AgendamentoFinanceiroParcela.data_vencimento',
                'AgendamentoFinanceiroParcela.valor',
                'AgendamentoFinanceiroParcela.descricao',
                'AgendamentoFinanceiroParcela.situacao',
                'AgendamentoFinanceiroParcela.tipo',
                'AgendamentoFinanceiroParcela.parcela',
                'AgendamentoFinanceiroParcela.entidade_id',
                'AgendamentoFinanceiroParcela.conta_origem_id',
                'AgendamentoFinanceiroParcela.conta_destino_id',
                'AgendamentoFinanceiroParcela.planodeconta_id',
                'AgendamentoFinanceiroParcela.numero',
                'AgendamentoFinanceiroParcela.observacoes',
                'AgendamentoFinanceiroParcela.email_enviado',
                'AgendamentoFinanceiroParcela.lancamentofinanceiro_id',
                'AgendamentoFinanceiroParcela.modified_by',
                'AgendamentoFinanceiroParcela.modified',
                'AgendamentoFinanceiroParcelaFatura.id',
                'AgendamentoFinanceiroParcelaFatura.agendamento_financeiro_parcela_id',
                'AgendamentoFinanceiroParcelaFatura.fatura_id',
                'AgendamentoFinanceiro.id',
                'AgendamentoFinanceiro.tipo',
                'AgendamentoFinanceiro.situacao',
                'AgendamentoFinanceiro.numero_parcelas',
                'AgendamentoFinanceiro.periodicidade_id',
                'LancamentoFinanceiro.id',
                'LancamentoFinanceiro.agendamento_parcela_id',
                'LancamentoFinanceiro.valor',
                'LancamentoFinanceiro.tipo',
                'LancamentoFinanceiro.situacao',
                'PlanoDeConta.id',
                'PlanoDeConta.numero',
                'PlanoDeConta.nome',
                'PlanoDeConta.situacao',
                'Entidade.id',
                'Entidade.nome_principal',
                'Entidade.nome_secundario',
                'Entidade.situacao',
                'EntidadesEndereco.id',
                'EntidadesEndereco.cidade',
                'EntidadesEndereco.estado',
                'EntidadesEndereco.uf',
                'ContaOrigem.id',
                'ContaOrigem.nome',
                'ContaOrigem.contatipo_id',
                'ContaOrigem.situacao',
                'ContaDestino.id',
                'ContaDestino.nome',
                'ContaDestino.contatipo_id',
                'ContaDestino.situacao',
                'Anexo.id'
            ),
            'limit'     => 29,
            'recursive' => -1
        );

        try {
            $AgendamentoFinanceiroParcelasReceber = $this->paginate('AgendamentoFinanceiroParcela');
        } catch(NotFoundException $e) {
            $AgendamentoFinanceiroParcelasReceber = array();
            $this->set('agendamentos_financeiros_parcelas', $AgendamentoFinanceiroParcelasReceber);
            $this->render('contas_receber_auto_paginate', 'ajax');
            exit();
        }

    }

Step by an array all states

$uf = array(
        'AC' => 'AC',  
        'AL' => 'AL',  
        'AM' => 'AM',
        'AP' => 'AP',
        'BA' => 'BA',
        'CE' => 'CE',
        'DF' => 'DF',
        'ES' => 'ES',
        'GO' => 'GO',
        'MA' => 'MA',
        'MG' => 'MG',
        'MS' => 'MS',
        'MT' => 'MT',
        'PA' => 'PA',
        'PB' => 'PB',
        'PE' => 'PE',
        'PI' => 'PI',
        'PR' => 'PR',
        'RJ' => 'RJ',
        'RN' => 'RN',
        'RO' => 'RO',
        'RR' => 'RR',
        'RS' => 'RS',
        'SC' => 'SC',
        'SE' => 'SE',
        'SP' => 'SP',
        'TO' => 'TO',

        'recursive'     => -1
    );

I send to view

$this->set('uf', $uf);

And in the view I have the search filter

<td style="float: left;">
                        <div id="Grupo_ano" class="control-group">
                            <label class="control-label">UF</label>
                            <div class="controls">
                                <div class="input-prepend input-append">
                                    <?php 
                                    echo $this->Form->select(
                                        'Filtro.uf',
                                        $uf,
                                        array(
                                            'class' => 'chzn-select-deselect',
                                            'data-placeholder' => 'Selecione',
                                            'label' => false,
                                            'div'=> false,
                                            'style' => 'width: 110px;',
                                        )
                                    );
                                    ?>
                                </div>
                            </div>
                        </div>
                    </td>    

When I query the filter I get this error and only with this filter

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Entidadesendereco.Uf' in 'Where clause'

Someone knows what could be wrong, they’re all at the same level of index

  • Check if there is an Entidadesendereco.Uf field

  • @gmsantos the field exists for this reason do not understand the pq of the error, when from a pr in the variable it returns right.

1 answer

0


Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Entidadesendereco.Uf' in 'Where clause'

When such an error occurs it is because the column in question does not exist in the specified table. Basically the alias Entidadesendereco (or the table entity_addresses) does not have a column called Uf.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.