【发布时间】:2010-04-07 21:37:56
【问题描述】:
我在我的导航模型中定义了一个执行查询的函数,我想知道是否有更“Zendy”的方式来生成/执行查询。我正在使用的查询是由Bill Karwin 在another thread here 上提出的,用于设置任意记录顺序。我尝试使用准备好的语句,但 SIGN() 函数中的值被引用了。
我正在为 MySQL 使用 PDO 适配器。
/**
*
*/
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;
}
【问题讨论】:
-
“Zendy”是指使用 Zend 提供的抽象,而不是像上面那样编写直接查询。
标签: php mysql zend-framework pdo zend-db