我有使用嵌套集合模型存儲在mySql數據庫中的分層數據(類別)。在嵌套集的兄弟姐妹前的mySql強制項目
所有工作完全只是我現在需要一個屬性添加到任何節點(force_to_top
)將設置節點暫時迫使它的兄弟姐妹的頂部的能力,我不是100%肯定該怎麼辦這沒有在物理上改變lft
和rgt
的值。
當一個節點force_to_top
屬性被打開,我不希望在其他地方存儲原始lft
和rgt
值,改變lft
和rgt
值將節點移動到正確的位置,然後重置其原始lft
和rgt
值一旦force_to_top
屬性被刪除。我認爲這會導致更嚴重的問題,再加上它似乎是一個非常迂迴的做事方式? (糾正我,如果這實際上是最簡單的方式!但我想找到另一個,最好只使用SQL不更新任何值的數據庫)
我想知道是否有可能以某種方式操縱輸出sql取決於force_to_top
屬性?
例如,如果我們有如下的結構
Cars
|
-----------------
| | |
Audi Ford VW
這將有以下LFT/RGT/force_to_top值:
node lft rgt force_to_top
Cars 1 8 false
Audi 2 3 false
Ford 4 5 false
VW 6 7 false
當我們輸出 '汽車' 的子節點,我們倒是給出:
Audi
Ford
VW
但是讓我們說點‘大衆’有其force_to_top
財產小號等來true
,我會真正需要的是的子節點的輸出「汽車」現在是:
VW
Audi
Ford
正如我所說,我想過存儲原始lft
和rgt
價值和重置後他們該force_to_top
屬性被刪除。不是做這種方式的有利的一面是關閉force_to_top
屬性的速度,這將意味着比實際的force_to_top
值再次設置爲false
和節點會立即回落到原來的位置沒有其他數據操作。也意味着我不需要爲每個節點的原始值lft
和rgt
創建存儲區域/額外表格/額外字段。
我也想過,我獲取的結果後,在PHP這樣做,但對於大型數據集可能會很慢下來。
我本來到force_to_top
節點設置爲所有的頂部,這是非常容易的,只需ORDER BY force_to_top, lft
,但是現在只能迫使其兄弟姐妹的頂部要複雜得多,因爲節點可能是在中心一個巨大的層次結構。
任何建議或正確的方向點將不勝感激。