-1

次のSQLクエリを準備しようとしていますが、残念ながらうまくいきませんでした。

select course.course_name, enroll.start_date from dp_courses course LEFT OUTER JOIN dp_enroll enroll ON course.id = enroll.course_id and enroll.student_id=3

$criteria=new CDbCriteria(array(
            'order'=>'update_time DESC',
            'with'=> array('enroll'),
        ));
    $criteria->alias = 'course';
    $criteria->together=true;
    $criteria->join='LEFT OUTER JOIN dp_enroll ON dp_enroll.course_id=course.id and dp_enroll.student_id='. Yii::app()->user->id;
            //$criteria->condition='dp_enroll.student_id='. Yii::app()->user->id;

コースモデルの関係は次のとおりです。

 public function relations()    { 
    return array(
                    'enroll'=> array(self::HAS_MANY, 'Enroll', 'course_id'),
                    'author' => array(self::BELONGS_TO, 'YumProfile', 'author_id'),         );  }

しかし、結果のSQLクエリは私が望むものです

LEFT OUTER JOIN dp_enroll enroll ON course.id = enroll.course_id **and** enroll.student_id=3

and演算子を使用して 2 つの属性でテーブルを結合する

4

1 に答える 1

1

ドキュメントのポイント 1 Declaring Relationshipにあります。あなたの例では、Yii は複合結合について考えていません。このように結合したい場合は、複合キー関係を定義する必要があります。代わりcourse_idに、ドキュメントに記載されているように配列で定義します。

array('fk_c1'=>'pk_c1','fk_c2'=>'pk_c2')
于 2013-05-21T09:54:23.003 に答える