【问题标题】:Joining Tables With Zend Framework PHP使用 Zend Framework PHP 连接表
【发布时间】:2009-07-29 10:50:42
【问题描述】:

我对 Zend 框架比较陌生。

我了解 Zend_Table 的用法,并且可以使用 Zend 函数从与该类关联的表中获取数据。

例如,我有一个视频表,在另一个表中我有视频与其所属类别之间的关联。

我有点难过如何在框架内激活如下选择:

video,category 选择 * 其中category.category_id = 3 AND video.id = category.video_id

任何建议都会很棒。

谢谢。

【问题讨论】:

    标签: php zend-framework


    【解决方案1】:
    $db->select()->from('video')->joinInner('category','video.id = category.video_id')->where('category.category_id = ?',3)
    

    顺便说一句:看起来您的数据库设计有误。您的视频表中应该有 category_id(如果 1 个视频 -> 1 个类别)或有一个连接表 (M:N),但将视频 id 存储在类别中似乎是错误的。

    【讨论】:

    • 只是一个简短的参考。 $sql = $this->getDbTable()->select()->where('group_id = ?', $group_id)->joinInner('category','video.id = category.video_id')->where( 'category.category_id = ?',3); $result = $this->getDbTable()->fetchRow($sql);
    【解决方案2】:

    我会使用Zend_Db_Select:

        $select = $this->db->select()->from(array('v' => 'video'))
                       ->join(array('c' => 'category'),'v.id = c.video_id')
                       ->where('c.category_id = ?', 3);
        print_r($select->__toString());
    

    输出:

    SELECT `v`.*, `c`.* FROM `video` AS `v` INNER JOIN `category` AS `c` ON v.id = c.video_id WHERE (c.category_id = 3)
    

    【讨论】:

    • 在此示例中,您将如何从类别表中读取列。是否期望 Zend_Db_Table_Abstract 将定义 referenceMap 或者我可以传递一个特定类别列名的数组来读取?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多