2012-09-01 57 views
5

我是CakePHP的新手,並且面臨着SQL別名問題。 我想創建一個Excel文件來從MySQL數據庫生成報告。CakePHP沒有得到正確的別名

/** 
    * Generate transaction report 
    * 
    * @param none 
    * 
    * @return void 
    */ 
    public function generateReport() 
    { 

     //Getting data from the database to generate the report in Excel file 
     $data = $this->AchTransaction->find('all', array(
      //'conditions' => $searchCondition, 
      'fields' => array(
        "payee_name AS PAYEENAME", 
        'reference AS REFERENCE', 
        'reference2 AS REFERENCE2', 
        'currency AS CURRENCY', 
        'amount AS PAYOUTAMOUNT', 
        'bank_name AS BANKNAME', 
        'bank_branch_name AS BANKBRANCHNAME', 
        'bank_address AS BANKADDRESS', 
        'bank_country AS BANKCOUNTRY', 
        'account_name AS ACCOUNTNAME', 
        'account_class AS ACCOUNTCLASS', 
        'account_type AS ACCOUNTTYPE', 
        'bank_routing_number AS BANKROUTING', 
        'account_number AS ACCOUNT', 
        'beneficiary_address AS BENEFICIARYADDRESS', 
        'beneficiary_city AS BENEFICIARYCITY', 
        'beneficiary_state AS BENEFICIARYSTATE', 
        'beneficiary_postcode AS BENEFICIARYZIPCODE', 
        'beneficiary_country AS BENEFICIARYCOUNTRY', 
        'note as NOTE' 
        ), 
      'order' => array('AchTransaction.id DESC') 
       )); 



     // Generating Excel file 
     $this->Common->generateReport($data); 
    } 

我能夠生成Excel的,但有別名只有一個問題,正如你所看到

"payee_name AS PAYEENAME", 

這裏payee_name是在MySQL表列或字段的名稱,我想這是PAYEE NAME,但是當我寫:

"payee_name AS PAYEE NAME", 

我得到這個MySQL錯誤:

Database Error 

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'payee_name AS PAYEE NAME' in 'field list' 

SQL Query: SELECT `payee_name AS PAYEE NAME`, `reference` AS `REFERENCE`, `reference2` AS `REFERENCE2`, `currency` AS `CURRENCY`, `amount` AS `PAYOUTAMOUNT`, `bank_name` AS `BANKNAME`, `bank_branch_name` AS `BANKBRANCHNAME`, `bank_address` AS `BANKADDRESS`, `bank_country` AS `BANKCOUNTRY`, `account_name` AS `ACCOUNTNAME`, `account_class` AS `ACCOUNTCLASS`, `account_type` AS `ACCOUNTTYPE`, `bank_routing_number` AS `BANKROUTING`, `account_number` AS `ACCOUNT`, `beneficiary_address` AS `BENEFICIARYADDRESS`, `beneficiary_city` AS `BENEFICIARYCITY`, `beneficiary_state` AS `BENEFICIARYSTATE`, `beneficiary_postcode` AS `BENEFICIARYZIPCODE`, `beneficiary_country` AS `BENEFICIARYCOUNTRY`, `note` AS `NOTE` FROM `aramor_payments`.`ach_transactions` AS `AchTransaction` WHERE 1 = 1 ORDER BY `AchTransaction`.`id` DESC 

Notice: If you want to customize this error message, create app\View\Errors\pdo_error.ctp 
Stack Trace 

    CORE\Cake\Model\Datasource\DboSource.php line 461 → PDOStatement->execute(array) 
    CORE\Cake\Model\Datasource\DboSource.php line 427 → DboSource->_execute(string, array) 
    CORE\Cake\Model\Datasource\DboSource.php line 671 → DboSource->execute(string, array, array) 
    CORE\Cake\Model\Datasource\DboSource.php line 1082 → DboSource->fetchAll(string, boolean) 
    CORE\Cake\Model\Model.php line 2631 → DboSource->read(AchTransaction, array) 
    APP\Controller\AchtransactionsController.php line 353 → Model->find(string, array) 
    [internal function] → AchtransactionsController->generateReport() 
    CORE\Cake\Controller\Controller.php line 485 → ReflectionMethod->invokeArgs(AchtransactionsController, array) 
    CORE\Cake\Routing\Dispatcher.php line 186 → Controller->invokeAction(CakeRequest) 
    CORE\Cake\Routing\Dispatcher.php line 161 → Dispatcher->_invoke(AchtransactionsController, CakeRequest, CakeResponse) 
    APP\webroot\index.php line 92 → Dispatcher->dispatch(CakeRequest, CakeResponse) 

你能幫我拿payee_name字段的名字爲PAYEE NAME

+0

你可以用方括號一樣''[含反引號內的空間列收款人名稱]'' –

回答

5

變化

"payee_name AS PAYEE NAME", 

"`payee_name` AS `PAYEE NAME`" 

另一種選擇是使用virtualFields

$this->AchTransaction->virtualFields['PAYEE NAME'] = 'payee_name'; 
array('fields' => array('PAYEE NAME', 'etc')) 
+0

謝謝老兄..... :) – Ram

+0

你應該交流如果這解決了你的問題@Ram,請將其作爲答案 –