2012-11-07 62 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

所以问题是 - 如何正确地消除歧义。

回答