2012-09-13 61 views
1

我使用此代碼,但只選擇了一個表的數據。在cakephp中連接兩個表時只能選擇一個表的數據

我需要從兩個表中選擇所有字段:

$options['joins'] = array(
       array('table' => 'tbl_users', 
        'alias' => 'Users', 
        'type' => 'INNER', 
        'foreignKey' => 'assigned_by', 
        'fields' => 'Users.user', 
        'conditions' => array(
         'TravancoAdmin.assigned_by = Users.id' 
        ) 
       ) 
      ); 
      $options['conditions'] = array('TravancoAdmin.id' => $task_id); 
$result = $this->find('all', $options); 
     return $result ? $result : 1; 

如何我可以從兩個表的所有字段?

如果在我的代碼中有任何錯誤?

回答

5

您需要將'fields'選項從'joins'中移出。否則$ this-> find只會獲取當前模型的字段。請記住,當您指定'fields'時,需要添加所需的所有字段,包括當前模型和您要加入的表中需要的字段。

例如:

$options['joins'] = array(
       array('table' => 'tbl_users', 
        'alias' => 'Users', 
        'type' => 'INNER', 
        'foreignKey' => 'assigned_by', 
        // 'fields' => 'Users.user', <- get rid of this 
        'conditions' => array(
         'TravancoAdmin.assigned_by = Users.id' 
        ) 
       ) 
      ); 
$options['fields'] = array('TheModelThatThisRefersTo.*','Users.user'); // <- insert this 
$options['conditions'] = array('TravancoAdmin.id' => $task_id); 
$result = $this->find('all', $options); 
return $result ? $result : 1; 
+0

可以使用代碼讓所有的領域...... ..... – Kichu

+0

使它與代碼:p – mtsvetkov

+0

其工作thankz .... – Kichu

0

嘗試使用reucrsive 2,你必須關係表到您的moedl正確的,如果你想檢索數據。 您將查詢後,你可以有一個大陣列的所有領域,嘗試用的var_dump打印,看看是否有您要

$this->recursive = 2; 
$options['joins'] = array(
       array('table' => 'tbl_users', 
        'alias' => 'Users', 
        'type' => 'INNER', 
        'foreignKey' => 'assigned_by', 
        'fields' => 'Users.user', 
        'conditions' => array(
         'TravancoAdmin.assigned_by = Users.id' 
        ) 
       ) 
      ); 
      $options['conditions'] = array('TravancoAdmin.id' => $task_id); 
$result = $this->find('all', $options); 
     return $result ? $result : 1; 
+0

你的代碼返回錯誤.......... – Kichu

+0

我用其他代碼編輯 –

相關問題