我的目標是有可能通過用戶名和姓氏以及通過錄入年和學期搜索文檔。 文件只與聲明有關,以便文件與一個聲明連接一個聲明和聲明可以很好地連接到一個或一個文件。Yii框架 - 通過相同的「通過」表的兩個關係
聲明與OutgoingStudent和Recrutation有關。
所以當查詢文件我想通過聲明表查詢OutgoingStudent和Recrutations。
我在文檔中的關係碼:
return array(
'declaration' => array(self::BELONGS_TO, 'Declaration', 'DeclarationID'),
'outgoingStudentUserIdUser' => array(self::HAS_ONE, 'OutgoingStudent', 'OutgoingStudent_User_idUser','through'=>'declaration',),
'Recrutation' => array(self::HAS_ONE, 'Recrutation', 'Recrutation_RecrutationID','through'=>'declaration'),
);
現在當搜索()函數,我要打一個查詢 - >與
'declaration','outgoingStudentUserIdUser' and 'Recrutation':
$criteria->with = array('declaration','Recrutation','outgoingStudentUserIdUser');
我得到這個錯誤:
CDbCommand nie zdołał wykonać instrukcji SQL: SQLSTATE[42000] [1066] Not unique table/alias: 'declaration'. The SQL statement executed was: SELECT COUNT(DISTINCT
t
.DeclarationID
) FROMDocuments
t
LEFT OUTER JOINDeclarations
declaration
ON (t
.DeclarationID
=declaration
.idDeclarations
) LEFT OUTER JOINRecrutation
Recrutation
ON (declaration
.Recrutation_RecrutationID
=Recrutation
.RecrutationID
) LEFT OUTER JOINDeclarations
declaration
ON (t
.DeclarationID
=declaration
.idDeclarations
) LEFT OUTER JOINOutgoingStudent
outgoingStudentUserIdUser
ON (declaration
.OutgoingStudent_User_idUser
=outgoingStudentUserIdUser
.User_idUser
)
僅使用$criteria->with = array('declaration','Recrutation')
或$criteria->with = array('declaration','outgoingStudentUserIdUser')
只有在使用b OTH。
所以可能它應該以其他方式完成,但怎麼做?
感謝您的意見!我試圖實現的目標是在CGridView中顯示文檔(例如:show(在CGridView中)顯示屬於recrutation id 1且由用戶創建的所有文檔的Recrutations數據和Outgoing Students數據(姓名和姓名)約翰·史密斯)。在搜索()中使用「with」的想法不是我的 - 我在這裏找到它:http://www.yiiframework.com/wiki/281/searching-and-sorting-by-related-model-in-cgridview/ – Pax0r 2012-01-03 20:02:24
原來如此!是的,這是我的錯。現在,你是否嘗試了我的建議?它有用嗎? – 2012-01-03 21:56:00
我已經手寫了一個SQL,但仍然使用了一些一般的技巧,所以我接受你的答案 – Pax0r 2012-01-09 23:07:56