我在文件夾中有一個很好的文件夾和項目的情況。爲清楚起見,所有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
。
所以問題是 - 如何正確地消除歧義。