Zend的数据库适配器 - 复杂的MySQL查询(Zend Database Adapter - C

2019-10-21 01:04发布

我已经定义在我的导航模型的函数执行查询时,我在想,如果有发生的更加“Zendy”方式/执行查询。 我使用的查询,提出了由比尔Karwin在另一个线程这里设定任意的记录顺序。 我试图用一个事先准备好的声明,但在SIGN()函数的值得到报价。

我使用的是PDO适配器为MySQL。

/**
 *
 */
public function setPosition($parentId, $oldPosition, $newPosition)
{
    $parentId = intval($parentId);
    $oldPosition = intval($oldPosition);
    $newPosition = intval($newPosition);
    $this->getAdapter()->query("
        UPDATE `navigation`
        SET `position` = CASE `position`
            WHEN $oldPosition THEN $newPosition
            ELSE `position` + SIGN($oldPosition - $newPosition)
            END
        WHERE `parent_id` = $parentId
        AND `position` BETWEEN LEAST($oldPosition, $newPosition)
            AND GREATEST($oldPosition, $newPosition)
    ");
    return $this;
}

Answer 1:

你可以使用Zend_Db_Select和/或Zend_Db_Expr如果它的工作原理就像是,不改变它。 实在是没有必要只是因为他们有使用任何ZF的部件,或者使你的代码更Zendy。 用它们来解决特定问题。

请记住,每一个抽象会让你的代码一定程度较慢。 可能不是很多,但也可能没有必要。 我可以从一个项目我自己的经验,我们屈服于使用尽可能多的ZF组件可以说,即使我们可以不和简单完成。 没有还清,我们后来发现自己重构出他们中的很多。



文章来源: Zend Database Adapter - Complex MySQL Query