在发布这个问题之前,我已经阅读了我可以很好的所有回复。虽然相似,但没有一个解决我的特定问题(或者我不认识他们这样做)。
我有一个扩展 Zend_Db_Table_Abstract 的表类。在模型中,我尝试使用 join() 方法并基于这样的表 ID 返回单行:
$getCategoryResults = $this->select();
$getCategoryResults->setIntegrityCheck(false)
->from(array('c'=> 'categories', '*'))
->join(array('e' => 'events'),'c.events_idEvent = e.idEvent', array())
->where("e.idEvent = ?", $idEvent);
当我回显 sql 对象时,我得到了这个:
SELECT `c`.* FROM `categories` AS `c`
INNER JOIN `events` AS `e` ON c.events_idEvent = e.idEvent
WHERE (e.idEvent = '1')
奇怪的是,如果我使用这种格式,
->where("e.idEvent = $idEvent");
我的输出是“WHERE(e.idEvent = 1)”。该值未包含在刻度中,但似乎都适用于 MySQL。当我在 phpMyAdmin 中运行查询时,我得到了这个:
idCategory 类型 displayOrder 描述 localStartTime events_idEvent
1 个人 1 5k 跑步/步行 2010-02-18 23:59:59 1
2 团队 2 5k 团队类别 2010-02-18 23:59:591 1
这是我期望看到的。但是当我在浏览器中运行我的应用程序时,我得到了这样的丑陋:
SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'SELECT
c
.* FROMcategories
ASc
INNER JOINevents
ASe
ON c.events_id'附近使用正确的语法
我已经检查了我能想到的所有资源。希望 SO 超级专家的联合令人敬畏将使它成为我的最后一站。:D