2015-05-20 65 views
0

我是cakePHP的新手,我正在閱讀manuels併購買了這本書,我遇到過一個問題,需要一些幫助。mySQL在CakePHP加入查詢PHP

目前,我查詢我的DB這樣的(這是全班同學):

<?php 

class TapplicantController extends AppController { 

    public function index() { 

     $this->set('page_title', 'Dashboard'); 

     $tapplicant = $this->Tapplicant->query("SELECT tapplicant.AppID, tapplicant.AppIPAddress, tapplicant.AppAffID, tapplicant.AppDate, tapplicant.FirstName, tapplicant.LastName, tapplicant.Email, tapplicant.AppDomain, toutcome.AffCommission FROM tapplicant INNER JOIN toutcome ON tapplicant.AppID=toutcome.AppID LIMIT 0,15 "); 

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


    } 
} 

,然後我喜歡這個顯示它和它的作品罰款:

<?php foreach ($tapplicant as $tapplicant) : ?> 
     <tr> 

      <td><?=$tapplicant['tapplicant']['AppID']; ?></td> 
      <td><?=$tapplicant['tapplicant']['AppAffID']; ?></td> 
      <td><?=$tapplicant['tapplicant']['FirstName']; ?></td> 
      <td><?=$tapplicant['tapplicant']['LastName']; ?></td> 
      <td><?=$tapplicant['tapplicant']['Email']; ?></td> 
      <td><?=$tapplicant['tapplicant']['AppDate']; ?></td> 
      <td><?=$tapplicant['tapplicant']['AppDomain']; ?></td> 
      <td><?=$tapplicant['tapplicant']['AffCommission']; ?></td> 

     </tr> 
     <?php endforeach; ?> 

的問題是我有內部加入2表和它的不工作,我得到以下錯誤:未定義的索引:AffCommission

+0

使用​​<?= $ tapplicant ['toutcome'] ['AffCommission']; ?> – Abhishek

回答

1

您不應該使用query()檢索CakePHP中的數據,除非您重新盟友不能使用Cake way編寫查詢。要在蛋糕加入您的查詢應該是這個樣子: -

$tapplicant = $this->Tapplicant->find(
    'all', 
    array(
     'fields' => array(
      'Tapplicant.*', 
      'Toutcome.*' 
     ), 
     'joins' => array(
      array(
       'table' => 'toutcome', 
       'alias' => 'Toutcome', 
       'type' => 'INNER', 
       'conditions' => array('Tapplicant.AppID = Toutcome.AppID') 
      ) 
     ), 
     'limit' => 15 
    ) 
); 

結果數組然後,通過模型別名進行索引$tapplicant['tapplicant']['AffCommission'];應該像$tapplicant['Toutcome']['AffCommission'];。調試這個最簡單的方法是查看返回的數組是什麼,所以在代碼中使用print_r($tapplicant)debug($tapplicant)來查看返回的內容。

只要您正確地關聯模型,Containable behaviour可能會使它更簡單。

你沒有使用CakePHP naming conventions,你真的應該在其他地方使用Cake會有很多困難。我建議您從頭開始閱讀在線文檔,然後再跳入深層!

+0

嗨,謝謝你的回答。在使用上述內容並運行調試之後,它不會加入表格。 – MatHatrik

+0

@MaxPayneUK我已經更新了我的答案,以便它特別包含兩個表中的字段(以前忘記包含該字段)。如果這不能解決它,那麼你需要看看由Cake生成的查詢,並嘗試直接對數據庫運行它,看看它是否工作。如果你還沒有安裝它,DebugKit插件將會有所幫助(https://github.com/cakephp/debug_kit/tree/2.2)。 – drmonkeyninja

+0

謝謝你工作完美! – MatHatrik

0
Try: 
$options['joins'] = array(
    array(
     'table' => 'toutcome', 
     'alias' => 'Toutcome', 
     'type' => 'INNER', 
     'conditions' => array('Tapplicant.AppID = Toutcome.AppID') 
     ) 
); 

$options['fields'] = array(
    Tapplicant.AppID, 
    Tapplicant.AppIPAddress, 
    Tapplicant.AppAffID, 
    Tapplicant.AppDate, 
    Tapplicant.FirstName, 
    Tapplicant.LastName, 
    Tapplicant.Email, 
    Tapplicant.AppDomain, 
    Toutcome.AffCommission 
); 

$options['limit'] = 15; 

$tapplicant = $this->Tapplicant->find('all', $options);