Zend Framework - 直接使用SQL

时间:2011-05-03 21:21:45

标签: php sql zend-framework

我目前正在使用Zend Framework从头开始一个项目。我在PHP和SQL方面经验丰富,但我以前从未使用过PHP框架。

关于数据库方面的事情 - 许多教程使用Zend类来包装SQL,这样您就不必编写原始SQL。例如:

$select = $this->select()
    ->from('MyTable')
    ->order('MyField');

然而,我的偏好是编写SQL,因为这是我习惯的,并且感觉到灵活性和开发速度,这是最好的决定。 (注意,我实际上是指使用PDO参数化的SQL,而不是完全原始的SQL)。

我的问题是:

  1. 这样做有什么问题吗?从长远来看,我是否更好地采用Zend方式进行数据库查询? Zend开发人员自己编写SQL而不是使用Zend风格的方法查询是否常见?

  2. 在保持MVC代码布局的同时,最常用的实现方法是什么? Google给了我this link(和类似的),但是控制器中有SQL(我不想要)。我仍然想创建自己的应用程序特定的模型类,并坚持MVC拆分。我可以想到很多地方可以在我的模型中实例化Zend_Db_Adapter_Pdo_Mysql类 - 但是我想知道最常见的设计模式是什么。

2 个答案:

答案 0 :(得分:8)

我相信你最好的选择是在你的模型中写下这个:

public function myQuery ($table, $id) {
    return $this
        ->getDefaultAdapter()
        ->query("SELECT * FROM ? WHERE id = ?",
            array($table,$id)
        )
        ->fetchAll()
    ;
}

这样做是完全可以的。不应该有任何问题。事实上,当你需要使用子查询或其他更复杂的东西时,你会遇到很多麻烦。你可以用Zend的功能完成大部分工作,但说实话:随着查询变得更加复杂,它们往往变得难以理解。

无论你是否以Zend的方式取得更好,取决于你和你对他们的感觉如何。我更喜欢Zend为大部分工作提供的功能,但这只是个人偏好的问题,真的。

使用两种风格AFAIK是很常见的,虽然我不知道有太多人使用Zend(主要来自我工作的公司),所以不要引用我;)。

答案 1 :(得分:1)