Запрос приносит данных игнорируя $conditions


делаю запрос и торт приносит все данные, минуя $conditions. Я хочу искать по дате, но когда я помещаю дату, которая не существует ни одной записи, даже так tráz все данные.

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

        $dataDespesa=null;

        $dataDespesa = $this->request->data['Despesa']['ano']."-".$this->request->data['Despesa']['mes'];

        $despesas = $this->Despesa->find('all', array(
'conditions'=>array(
    'data_despesa like'=>"%$this->dataDespesa%")));

        if (($despesas==null) || (!isset($despesas))) {
            $this->Session->setFlash("Sua pesquisa não retornou nenhum resultado.");
        }

        else {
            $this->Session->write("Despesas", $despesas);

            $this->redirect(array('action'=>'exibirDespesas'));
        }
    }
}

Http://www.hastebin.com/aluridixiq.coffee

 1
Author: bfavaretto, 2016-01-19

2 answers

Вы это сравнение даты с LIKE и в этом случае не будет тебе возврата нет реестра, поскольку никакие записи это равно вас даты этого ищет.

При покупке дату определенного дня, вы можете использовать >= <=, between или другие способы для сравнения даты.

Я больше и равно

$despesas = $this->Despesa->find('all', array(
    'conditions'=>array(
        'data_despesa >='=>"%$this->dataDespesa%",
        'data_despesa <='=>"%$this->dataDespesa%"
        )   
    ));

Edit - Пытается сравнить таким образом:

$despesas = $this->Despesa->find('all', array(
    'conditions'=>array(
        'MONTH(data_despesa)'=>$this->request->data['Despesa']['mes'],
        'YEAR(data_despesa)'=>$this->request->data['Despesa']['ano']
        )   
    ));
 1
Author: Jeferson Assis, 2016-01-19 15:13:42

Измените это:

'data_despesa like'=>"%$this->dataDespesa%"

:

"data_despesa like '%{$this->dataDespesa}%'"
 1
Author: bfavaretto, 2016-01-19 13:43:05