我正在尝试使用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。
我做错了什么?
谢谢, 马丁
答案 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语句末尾的空白数组,它指定从连接表中不返回任何记录。