我在使用CActiveDataProvider
连接两个表时遇到了一些问题表格是: 问题(身份证,描述), questionInFeedback(feedbackId,questionId)
和关系:
反馈=>
'questionInFeedbacks' => array(self::HAS_MANY,'QuestionInFeedback','feedbackId'),
问题=>
'questionInFeedbacks' => array(self::HAS_MANY,'QuestionInFeedback','questionId'),
questionInFeedback =>
'feedback' => array(self::BELONGS_TO, 'Feedback', 'feedbackId'),
'question' => array(self::BELONGS_TO, 'Question', 'questionId'),
如果我可以使用SQL那么我会使用
SELECT q.id
FROM questionInFeedback AS qf,Question AS q
WHERE qf.question_id=q.id
我需要这些问题ID在反馈视图中显示与反馈相关的问题。
保护/控制器/ feedbackController:
$issueDataProvider=new CActiveDataProvider('Question', array(
'criteria'=>array(
'condition'=>'',
'params'=>array(':questionId'=>$this->loadModel($id)->id),
感谢您的帮助:)
编辑: Yii给了我以下错误;
“为foreach()提供的参数无效”,突出显示第826行。
{
815 // determine the primary key value
816 if(is_string($this->_pkAlias)) // single key
817 {
818 if(isset($row[$this->_pkAlias]))
819 $pk=$row[$this->_pkAlias];
820 else // no matching related objects
821 return null;
822 }
823 else // is_array, composite key
824 {
825 $pk=array();
826 foreach($this->_pkAlias as $name=>$alias)
827 {
828 if(isset($row[$alias]))
829 $pk[$name]=$row[$alias];
830 else // no matching related objects
831 return null;
832 }
833 $pk=serialize($pk);
834 }
835
836 // retrieve or populate the record according to the primary key value
837 if(isset($this->records[$pk]))
838 $record=$this->records[$pk];
答案 0 :(得分:0)
您可以使用条件的with
属性来指定关系:
$issueDataProvider=new CActiveDataProvider('Question', array(
'criteria'=>array(
'condition'=>'t.id = :questionId',
'params'=>array(':questionId'=>$this->loadModel($id)->id),
'with' => array('questionInFeedbacks'),
)
);
顺便说一下,您的loadModel
方法不确定,但$this->loadModel($id)->id
可能会返回与$id
相同的值
因此'params'=>array(':questionId'=>$this->loadModel($id)->id),
可以更改为'params'=>array(':questionId'=>$id),