hi every one:
these are my relations:
'author' => array(self::BELONGS_TO, 'JTUser', 'CREATOR'),
'topic' => array(self::BELONGS_TO, 'JTTopic', 'TOPICREF'),
'content_division'=>array(self::HAS_MANY,'JTContentDivision','CONTENTID'),
'parts'=>array(self::HAS_MANY,'JTDivision',array('GROUPID'=>'DIVID'),'through'=>'content_division', 'alias'=>'content_part'),
'category'=>array(self::HAS_MANY,'JTDivision',array('CATEGORYID'=>'DIVID'),'through'=>'content_division', 'alias'=>'content_category'),
and I want to create this query with criteria:
SELECT *
FROM `jdb_content_bank` `t`
LEFT OUTER JOIN `jdb_user` `author` ON ( `t`.`CREATOR` = `author`.`USERID` )
LEFT OUTER JOIN `jdb_topic` `topic` ON ( `t`.`TOPICREF` = `topic`.`TOPICID` )
LEFT OUTER JOIN `jdb_content_division` `content_division` ON ( `content_division`.`CONTENTID` = `t`.`CONTENTBANCKID` )
LEFT OUTER JOIN `jdb_division` `content_part` ON ( `content_division`.`GROUPID` = `content_part`.`DIVID` )
WHERE (
`t`.`STATUS` =1
AND `content_part`.`DIVID` =1
)
this is my criteria:
$criteria = new CDbCriteria;
$criteria->with = array('author'=>array('select'=>'USERNAME'),
'topic'=>array('select'=>'topic.TITLE'),
'parts'=>array('select'=>''));
$cond = "`t`.`STATUS` =1 AND `content_part`.`DIVID` = ".$part;
but if I use "AND" in my condition it creates this query which does not have some joins:
SELECT
`t`.`CONTENTBANCKID` AS `t0_c0`, `t`.`CREATEDATE` AS `t0_c1`, `t`.`CREATOR` AS `t0_c2`,
`t`.`LASTMODIDATE` AS `t0_c3`, `t`.`LASTMODIFIER` AS `t0_c4`, `t`.`STATUS` AS `t0_c5`, `t`.`SUBJECT` AS `t0_c6`,
`t`.`CONTENT` AS `t0_c7`, `t`.`TAG` AS `t0_c8`, `t`.`TOPICREF` AS `t0_c9`, `author`.`USERNAME` AS `t1_c1`,
`author`.`USERID` AS `t1_c0`, `topic`.`TITLE` AS `t2_c6`, `topic`.`TOPICID` AS `t2_c0`
FROM `jdb_content_bank` `t`
LEFT OUTER JOIN `jdb_user` `author` ON (`t`.`CREATOR`=`author`.`USERID`)
LEFT OUTER JOIN `jdb_topic` `topic` ON (`t`.`TOPICREF`=`topic`.`TOPICID`)
WHERE (`t`.`STATUS` =1 AND `content_part`.`DIVID` = 1)
and when I use "," in my condition it creates this query which have all joins but "where clause" is not true:
SELECT COUNT(DISTINCT `t`.`CONTENTBANCKID`)
FROM `jdb_content_bank` `t`
LEFT OUTER JOIN `jdb_user` `author` ON (`t`.`CREATOR`=`author`.`USERID`)
LEFT OUTER JOIN `jdb_topic` `topic` ON (`t`.`TOPICREF`=`topic`.`TOPICID`)
LEFT OUTER JOIN `jdb_content_division` `content_division` ON (`content_division`.`CONTENTID`=`t`.`CONTENTBANCKID`)
LEFT OUTER JOIN `jdb_division` `content_part` ON (`content_division`.`GROUPID`=`content_part`.`DIVID`)
WHERE (`t`.`STATUS` =1, `content_part`.`DIVID` = 1)