带连接的Zend框架查询

时间:2010-11-13 09:47:11

标签: zend-framework join zend-db-table

我正在尝试使用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'));

我似乎遇到了列选项的问题,它似乎并没有限制列,我最终得到了 查询列列表中的clientactivity。* etc。

我做错了什么?

谢谢, 马丁

1 个答案:

答案 0 :(得分:1)

尝试代替$ select-> columns();

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

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

<强>更新

此示例使我们成为通用数据库处理程序:

$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);

关键部分是join语句末尾的空白数组,它指定从连接表中不返回任何记录。