2010-11-13 66 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