CActiveDataProvider を使用して 2 つのテーブルを結合する際に問題が発生しました
テーブルは次のとおりです: question(id,description) 、 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 が必要です。
保護された/コントローラー/フィードバックコントローラー:
$issueDataProvider=new CActiveDataProvider('Question', array(
'criteria'=>array(
'condition'=>'',
'params'=>array(':questionId'=>$this->loadModel($id)->id),
助けてくれてありがとう :)
EDIT: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];