2010-11-13 96 views
0

我試圖使用Zend Framework複製此查詢:Zend框架的查詢與聯接

SELECT 
    activitytype.description, 
    activity.datecompleted 

FROM 
    clientactivity 
INNER JOIN activity 
    ON activity.activityID = clientactivity.activityid 
INNER JOIN activitytype 
    ON activitytype.activitytypeid = activity.activitytypeid 

WHERE 
    clientactivity.clientid = 100 

這是我到目前爲止有:

$select = $dbTable->select(Zend_Db_Table::SELECT_WITH_FROM_PART); 

$select->setIntegrityCheck(false); 
$select->where('clientactivity.clientid = ?', $clientID); 

$select->join('activity', 'activity.activityid = clientactivity.activityid'); 
$select->join('activitytype', 'activitytype.activitytypeid = activity.activitytypeid'); 

$select->columns(array('activitytype.description', 'activity.datecompleted')); 

我似乎有與列的問題選項,它似乎並沒有限制列,我在查詢的列列表中結束了客戶端活動。*等。

我在做什麼錯?

感謝, 馬丁

回答

1

嘗試,而不是$選擇 - >列();

$select->from('activitytype.description', 'activity.datecompleted'); 

參考 - http://framework.zend.com/manual/en/zend.db.select.html

UPDATE:

該實施例使我們的通用數據庫處理程序:

$db = Zend_Db::factory('Pdo_Mysql', array(
      'host'  => '127.0.0.1', 
      'username' => 'yourusername', 
      'password' => 'somepassword', 
      'dbname' => 'yourdbname' 
     )); 

$select = $db->select(Zend_Db_Table::SELECT_WITH_FROM_PART); 
$select->from('tableName','fieldName') 
     ->join('joinTable', 'joinTable.keyId = tableName.keyId',array()) 
     ->where('tableName.userId = ?', $userId); 

$resultSet = $db->fetchAll($select); 

的關鍵部分是在結束時的坯件陣列這些連接語句指定了從連接表中返回的記錄。

+0

恐怕沒有幫助,首先給出錯誤,當我使字段爲數組並添加null作爲表名時,我得到列表中的字段但仍然具有客戶端活動。 。 – Martin 2010-11-13 11:13:12

+0

嗨,你使用Zend_Db_Table創建$ select?認爲這會對結果產生影響,默認情況下包含客戶端活動。我將用我剛剛使用Zend_Db_Select打開的一段代碼更新答案。 – simnom 2010-11-13 13:14:33

+0

這就是它,謝謝!我假設你在使用Zend_Db_Table時不能做這種事情。 – Martin 2010-11-13 14:00:56