2012-11-07 35 views
0

我在文件夾中有一個很好的文件夾和項目的情況。爲清楚起見,所有mysql都縮寫。如何在yii MANY_MANY關係中消除列名的歧義

CREATE TABLE folder 
    folder_id INT, 
    name VARCHAR(32), 
    sort_weight INT 

CREATE TABLE item 
    item_id INT, 
    name VARCHAR(32) 

,當然還有鏈接表

CREATE TABLE item_folder 
    folder_id INT, 
    item_id INT, 
    sort_weight INT 

正如你可能已經猜到了一個項目可以在多個文件夾(有點像在Linux文件系統的硬鏈接),並注意文件夾中有因爲sort_weight也可以在另一個文件夾內排序。現在我使用Yii和我在項目模型這樣一個很好的關係:

public function relations() 
{ 
    return array(
     'folderitems' => array(self::MANY_MANY, 'Folder', 'item_folder(item_id, folder_id)'), 
    ); 
} 

的問題是,當我嘗試做一些漂亮的AR請求,我試圖解決它,我有一個問題。我的AR要求:

$items = Item::model()->with(array(
    'folderitems' => array(
    'condition' => "folderitems.folder_id = $someid" 
    ), 
))->findAll(array('order'=> "folderitems.sort_weight")); 

現在的問題是,像這樣的語法,而不是由item_folder.sort_weight排序它按folder.sort_weight。

如果我改變字段的名稱說item_folder.sort_weight2和嘗試:

[...]))->findAll(array('order'=> 'sort_weight2')); 

它的工作原理。

但是,如果我把兩個名字相同,並嘗試

[...]))->findAll(array('order'=> 'item_folder.sort_weight')); 

它說unknown column

所以問題是 - 如何正確地消除歧義。

回答