У меня есть так много вещей, чтобы сказать вам!Вот они:
Я нахожу ваше объявление функции отношений довольно грязным, и я не уверен, что оно делает то, что вы хотите (если оно сработало).Вот мои предложения повторно объявить это:
Прежде всего, 'outgoingStudentUserIdUser' выглядит как ужасное имя для отношения.В конце концов, отношение будет к экземплярам outgoingStudentUser, а не только к «идентификаторам».Итак, позвольте мне назвать его так же, как outgoingStudentUser.Теперь это мой код:
'outgoingStudentUser' => array(self::HAS_ONE, 'OutgoingStudent', array('idDocuments'=>'idOutgoingStudent'),'through'=>'declaration',),
, где 'idDocuments' - это первичный ключ модели Documents, а idOutgoingStudent - это первичный ключ модели OutgoingStudent.
Второе отношение может быть исправлено очень похожим образом:
'Recrutation' => array(self::HAS_ONE, 'Recrutation', array('idDocuments'=>'idRecrutation'),'through'=>'declaration'),
, где 'idDocuments' - первичный ключ модели Documents, а idRecrutation - первичный ключ модели Recrutation.
Вы можете обнаружить, что это правильное объявление здесь: http://www.yiiframework.com/doc/guide/1.1/en/database.arr#through-on-self
Но это еще не все.У меня есть больше, чтобы сказать вам!То, что вы делаете со своим кодом, бессмысленно.'with' используется для принудительной загрузки связанных объектов.В следующем коде:
$criteria->with = array('declaration','Recrutation','outgoingStudentUserIdUser');
в параметрах $ вы просто указываете, что при извлечении в БД экземпляра Document, использующего этот критерий $, он также извлекает модели, связанные с этим экземпляром отношениями.передается в качестве параметров для «с».Это нетерпеливая загрузка.Он используется для уменьшения количества запросов к базе данных.Это все равно что сказать: «иди в БД и принеси мне этот экземпляр Documents, но как только ты будешь там, принеси мне один раз для всех экземпляров других таблиц, связанных с этим объектом».
Ну, это то, что вы заявляете, но, конечно, это не то, что вы хотите сделать.Откуда я знаю?Потому что это объявление бесполезно внутри функции search ().Как вы можете видеть здесь: http://www.yiiframework.com/doc/api/1.1/CDbCriteria/#with-detail, 'with' полезен только в некоторых функциях, и search () не является одной из них.Внутренний поиск (), стремление к загрузке бессмысленно, бессмысленно и бесполезно.
Так что я вижу себя вынужденным спросить тебя, что ты пытаешься сделать?Вы говорите: «Моя цель - иметь возможность искать документы по именам и фамилиям пользователей, а также по году и семестру рекрутинга», но что вы подразумеваете под «поиском документов по именам пользователей и ...»?Хотите ли вы что-то вроде этого: $ user-> documents, чтобы вернуть все документы, связанные с $ user?Я надеюсь, что вы могли бы быть более конкретным в этом, но, возможно, в другом, более конкретном вопросе.