Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Zend中编写sql查询_Php_Sql_Zend Framework_Zend Db_Zend Db Table - Fatal编程技术网

Php 在Zend中编写sql查询

Php 在Zend中编写sql查询,php,sql,zend-framework,zend-db,zend-db-table,Php,Sql,Zend Framework,Zend Db,Zend Db Table,作为zend框架的初学者,我需要一些帮助来编写sql查询。 这是我的疑问: SELECT COUNT( * ) AS Ouvert , SUBSTRING_INDEX( emails.email_value, '@', -1 ) AS FAI, track_open.open_date FROM emails, track_open WHERE emails.email_id = track_open.email_id AND DATE( open_da

作为zend框架的初学者,我需要一些帮助来编写sql查询。 这是我的疑问:

   SELECT 
    COUNT( * ) AS Ouvert , SUBSTRING_INDEX( emails.email_value,  '@', -1 ) AS FAI, track_open.open_date
    FROM emails, track_open
    WHERE emails.email_id = track_open.email_id
    AND DATE( open_date ) = CURDATE( ) 
    GROUP BY SUBSTRING_INDEX( emails.email_value,  '@', -1 )
这是我要写的函数:

public function getOpen()
{
    $query = $this->select()
                  ->setIntegrityCheck(false)
                  ->from(array('e' => 'emails'))
                  ->join(array('to' => 'track_open'), 'e.email_id = to.email_id')
                ??????????

    $result = $this->fetchAll($query);

    if($result)
    {
        return $result->toArray();
    }

    return false;
}

因此,如果有人能举一个例子来编写这个查询,因为我不知道如何完成它。

我与Zend_Db合作已经很长时间了,我无法真正测试代码,但您可以尝试以下方法:

 $query = $this->select()
              ->setIntegrityCheck(false)
              ->from(array('e' => 'emails'), array(
                  'Ouvert' => new Zend_Db_Expr('COUNT( * )'),
                  'FAI' => new Zend_Db_Expr("SUBSTRING_INDEX( emails.email_value,  '@', -1 )"),
                  'track_open.open_date',
              ))
              ->join(array('to' => 'track_open'), 'e.email_id = to.email_id')
              ->where('emails.email_id = track_open.email_id')
              ->where('DATE( open_date ) = CURDATE( )')
              ->group(new Zend_Db_Expr("SUBSTRING_INDEX( emails.email_value,  '@', -1 )"))