我在文件夹中有一个很好的文件夹和项目的情况。为清楚起见,所有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
。
所以问题是 - 如何正确地消除歧义。