我的目标是有可能通过用户名和姓氏以及通过录入年和学期搜索文档。 文件只与声明有关,以便文件与一个声明连接一个声明和声明可以很好地连接到一个或一个文件。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