как поставить между в запросе Zend Framework - PullRequest
3 голосов
/ 09 февраля 2012

любой, кто исправляет этот запрос в соответствии с ZF.i имеет ситуацию, когда пользователь выбирает разные параметры и на основании этого делает мой запрос

$user = new Zend_Session_Namespace('user');
$phone_service_id = $user->phone_service_id;

$start_date = $this->_getParam('start_date'); //02/07/2012
$end_date = $this->_getParam('end_date');     //02/21/2012
$option_call_log = $this->_getParam('option_call_log'); //COLUMN NAME
$option_call_log_asc_desc = $this->_getParam('option_call_log_asc_desc');  //ASC/DESC

я думаю, что у меня есть синтаксическая ошибка в запросе, посмотрите еездесь

$select = $DB->select()
         ->from('CALL_LOG', array('caller_name','call_number','call_start_time','call_duration','call_direction'))
         ->where('phone_service_id = ?', $phone_service_id)
         ->where(DATE_FORMAT(date_created, '%m/%d/%Y') BETWEEN  $start_date  AND $end_date)
         ->order($option_call_log $option_call_log_asc_desc)
         ->limit(0,9);

что не так с этим ??

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Предложение BETWEEN включено, правильный путь показан ниже:

$select = $DB->select()
         ->from('CALL_LOG', array('caller_name','call_number','call_start_time','call_duration','call_direction'))
         ->where('phone_service_id = ?', $phone_service_id)
         ->where("DATE_FORMAT(date_created, '%m/%d/%Y') >= ?",  $start_date)
         ->where("DATE_FORMAT(date_created, '%m/%d/%Y') <= ?",  $end_date)
         ->order("".$option_call_log." ".$option_call_log_asc_desc)
         ->limit(0,9);

Попробуйте приведенный выше код, и ваша проблема будет решена.

0 голосов
/ 21 февраля 2013

Zend DB также используется в magento, поэтому я нашел способ.

$sql = $read->select()
                ->from(array('g' => $res->getTableName('geoloc')));

        $whereSql = "INET_ATON('{$remoteAddr}') BETWEEN g.start AND g.end";

        $sql = $sql->where($whereSql); //echo $sql;exit;
        $result = $read->fetchRow($sql);

вывод будет как ниже:

ВЫБРАТЬ g. * ОТ geoloc КАК g ГДЕ (INET_ATON ('41 .98.30.186 ') МЕЖДУ g.start И g.end)

надеюсь, это поможет.

...