【问题标题】:Zend Framework Query with JoinsZend 框架查询与连接
【发布时间】:2010-11-13 09:47:10
【问题描述】:

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

我似乎在使用 columns 选项时遇到了问题,它似乎并没有限制列,我最终得到 查询中的列列表中的clientactivity.*等。

我做错了什么?

谢谢, 马丁

【问题讨论】:

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


    【解决方案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);
    

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

    【讨论】:

    • 恐怕这无济于事,一开始会出错,当我将字段设为数组并添加 null 作为表名时,我得到了列表中的字段但仍然有客户端活动.* 等。谢谢。
    • 您好,您使用 Zend_Db_Table 创建 $select 吗?认为这会对默认情况下包含客户端活动的结果产生影响。我将使用我刚刚使用 Zend_Db_Select 敲出的一段工作代码来更新答案。
    • 知道了,谢谢!!我假设你在使用 Zend_Db_Table 时不能做这种事情。
    • @Martin 由于 Zend_Db_Table 代表 OOP 中的物理数据库表,并且您没有从该表中选择任何列,这并不是“你不能”的情况,更多的是“你应该”的情况't"。
    • @Shimnon:嘿!你的小空数组()救了我!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多