私はYII 1.1を使用しており、3つのテーブル間の関係を作成しようとしています。YiiのFindAll、無効なフィールド名
これまでのところとても良いですが、findAllの中でどこのclausuleを実行しようとすると、奇妙なものが得られます。
私のモデルはコースと呼ばれ、多くのビデオを持つ多くのモジュールがあります。 「すべてを見つける」では、有効化されているコース、モジュール、および動画のみに絞る必要があります。行うには
ので、私は次のコードを使用し
$courses=Course::model()->with(array(
'module' => array('joinType'=>'INNER JOIN', 'together'=>true),
'module.video' => array('joinType'=>'INNER JOIN', 'together'=>true),
))->findAll("language_id=2 && ==> **course.activated=1** <== && module.activated=1 && video.activated=1");
を問題が発生したSQL文が活性化されたコラムが存在しないことを私に語っています。
CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'course.activated' in 'where clause'. The SQL statement executed was: SELECT `t`.`id` AS `t0_c0`, `t`.`name` AS `t0_c1`, `t`.`description` AS `t0_c2`, `t`.`language_id` AS `t0_c3`, `t`.`activated` AS `t0_c4`, `module`.`id` AS `t1_c0`, `module`.`course_id` AS `t1_c1`, `module`.`name` AS `t1_c2`, `module`.`description` AS `t1_c3`, `module`.`activated` AS `t1_c4`, `video`.`id` AS `t2_c0`, `video`.`module_id` AS `t2_c1`, `video`.`name` AS `t2_c2`, `video`.`description` AS `t2_c3`, `video`.`video_url` AS `t2_c4`, `video`.`position` AS `t2_c5`, `video`.`activated` AS `t2_c6` FROM `Course` `t` INNER JOIN `Module` `module` ON (`module`.`course_id`=`t`.`id`) INNER JOIN `Video` `video` ON (`video`.`module_id`=`module`.`id`) WHERE (language_id=2 && course.activated=1 && module.activated=1 && video.activated=1)
しかし、私は、コード上で見ることができるように、それは、ありませんが、Yiiはコースにエイリアスを作成し、エイリアスは「T」です。
私がfindAllを変更し、course.activatedの代わりにt.activatedを使用すると、それは魅力的に機能します。 しかし、それは正しいとは思いません.yiiがクエリで使用した "t"エイリアスの代わりに、どのようにしてコースを使うことができますか? 私はトンを削除する場合は、もちろんMySQLが起動し、私はYiiの上で次のテキスト見つかっサイズに
それはYiiのための大会ですので、あなたがメインのActiveRecordモデル – SiZE
おお用Tの別名を使用する必要があり、私は、ということを知っていたしませんでしたか? – Lefsler