Ben bir sorgu yürütür benim Navigasyon modelinde bir işlevi tanımlanmış olması ve sorgu yürütme / üreten bir daha "Zendy" yolu olup olmadığını merak ediyordum. I istimal sorgu keyfi kayıt sırasını ayarlamak için Bill Karwin another thread here on tarafından önerilmişti. Ben hazırlanmış bir deyimi kullanarak çalıştı, ancak SIGN () fonksiyonu değerleri alıntı var.
MySQL için PDO adaptörü kullanıyorum.
/**
*
*/
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;
}