多層分類要怎麼做比較好

edited 十月 2013 in CakePHP
大家好:
請教一下大家,如果我有一個產品,可是它也有的分類的model
可這個分類是不一定的數量,有時候一層,有時是兩層

所以我在資料庫的地方是設計成
category id
name
parent_id

然後parent_id 等於null 就是最上層(root)
parent_id有數字 就是指向他的層上是什麼

所以我就在model的部分設定了

var $belongsTo = array(
'Category1' => array(
'className' => 'Category1',
'foreignKey' => 'parent_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);

var $hasMany = array(
'Category1' => array(
'className' => 'Category1',
'foreignKey' => 'parent_id',
'conditions' => '',
'fields' => '',
'order' => ''

)
);

就是belongTo和hasMany都是指向自已(Category1)

不過好像不行
因為馬上就跳出
SQL Error: 1066: Not unique table/alias: 'Category1'
應該是自已串自已的table名稱相同

請問客位大大,多層分類要怎麼做比較好>____<

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=5837

評論

  • edited 三月 2011
    關聯的 key 不能重複
    var $belongsTo = array(
            'CategoryParent' => array(
                'className' => 'Category',
                'foreignKey' => 'parent_id',
            )
        );
        var $hasMany = array(
            'CategoryChildren' => array(
                'className' => 'Category',
                'foreignKey' => 'parent_id',
            )
        );
    
  • edited 三月 2011
    謝謝kiang的回覆
    取了別名真的可以撈出資料來~

    可是拿出的array結構,不是和預期中 一層一層的

    後來看到cakephp手冊裡面有tree這一章
    就是因為原本model的hasMany belongTo 沒有辦法很好處理 樹狀的結構嗎?
  • edited 三月 2011
    原則上可以透過 recursive 參數去設定,但是不確定會不會產生衝突問題,但樹狀結構建議透過 tree behavior 處理比較好,只需要多加兩個欄位
Sign In or Register to comment.