ich habe folgendes Problem. Ich möchte 2 Tabellen, die über eine Relationstabelle (MANY_MANY) verbunden sind abfragen und dabei sowohl von Tabelle 1 als auch von Tabelle 2 Conditions in die Where-Klausel bekommen. Folgenden Code habe ich im Controller:
$criteria=new CDbCriteria;
$criteria->condition = 'film.status=1';
$criteria->order = 'filmtitel ASC';
$withOption = array();
$withOption['genres']['params'][':genreid'] = 8;
$films = film::model()->with($withOption)->findAll($criteria);
$this->render('index', array('films' => $films, 'pages' => $pages,));
Der erzeugte SQL sieht so aus:
SELECT `film`.`filmid` AS `t0_c0`, `film`.`filmtitel` AS `t0_c1`, `film`.`produktionsjahr` AS `t0_c2`, `film`.`status` AS `t0_c3`, t1.`genreid` AS `t1_c0`, t1.`genretitel` AS `t1_c1`, t1.`status` AS `t1_c2` FROM `film` INNER JOIN `genrefilm` genres_t1 ON (`film`.`filmid`=genres_t1.`genreid`) INNER JOIN `genre` t1 ON (t1.`genreid`=genres_t1.`filmid`) WHERE (film.status=1) ORDER BY filmtitel ASC
Ich möchte aber, diese Abfrage:
SELECT `film`.`filmid` AS `t0_c0`, `film`.`filmtitel` AS `t0_c1`, `film`.`produktionsjahr` AS `t0_c2`, `film`.`status` AS `t0_c3`, t1.`genreid` AS `t1_c0`, t1.`genretitel` AS `t1_c1`, t1.`status` AS `t1_c2` FROM `film` INNER JOIN `genrefilm` genres_t1 ON (`film`.`filmid`=genres_t1.`genreid`) INNER JOIN `genre` t1 ON (t1.`genreid`=genres_t1.`filmid`) WHERE (film.status=1 AND t1.genreid=8) ORDER BY filmtitel ASC
Die Models an sich sehen i.O. aus, zumal ich ja auch Ergebnisse bekomme. Nur eben die falschen ohne die weitere Einschränkung. Wie bekomme ich das aber hin?
Besten Dank für alle Antworten.

Help














