0

DBテーブル:

  • Mcourse(マスターコース)->コース名が含まれています
  • Lcourse(リンクされたコース-コースは大学に属しています)->外部キーMcourse_Idが含まれています。&大学ID。

Nw問題は

ドロップダウンリストを使用して、大学で利用可能なコースのリストを表示したい。

したがって、SQLクエリは次のとおりです。

Lcourse内部からLcourse_Id、Mcourse_Name *を選択し、Lcourse_Mcourse_Id =McourseIdでMcourseに参加します。

*Id & value pair for dropdownlist

createCommandを使用してこれを行うことができます。それはかなりうまく機能しています。しかし、私は関係を使用してこれを行うことはできません..私を助けてください。

4

2 に答える 2

0

エラーは、ビューのlistData()関数にあります。具体的には、Lcourseモデルにmc_Idがありません。

これらの関係のそれぞれに割り当てられているモデルを明確にしていないため、ビューで「mc_Id」の代わりに何を使用すべきかを推測することはできません。Lcourseモデルをチェックして、適切な列名を決定してください。

于 2012-08-22T21:41:56.390 に答える
0

あなたのMcourseテーブルが呼び出されcourses、そのテーブルのモデルが呼び出されCourses、あなたのLcourseテーブルが呼び出されcourses_colleges、あなたの大学のテーブルがcollegesであり、そのテーブルのモデルがColleges

Coursesこれで、関係のあるモデルが必要になります。

public function relations() {
    return array(
        'colleges' => array(self::MANY_MANY, 'Colleges', 'courses_colleges(course_id, college_id)')
    );
}

モデルCollegesには同様の関係が必要です。

public function relations() {
    return array(
        'courses' => array(self::MANY_MANY, 'Courses', 'courses_colleges(college_id, course_id)')
    );
}

ここで、特定の大学で利用可能なすべてのコースを含むドロップダウンを印刷する場合。コントローラのアクションメソッドで、コースを含むその大学のモデルを取得します。

public function actionShow() {
    $id = 1; // We set just some sample id. You could get it from request ofc.
    $college = Colleges::model()->with('courses')->findByPk($id);
    $this->render('show', array('college'=>$college));
}

今あなたの見解でこれを印刷してください:

echo CHtml::dropDownList('courses', '', CHtml::listData($college->courses, 'id', 'name'));

モデルの列はどこ'id'にありますか。'name'Courses

そんな感じ。

于 2012-08-23T09:54:47.067 に答える