0

この mysql クエリを Yii モデルで動作させようとしましたが、できません。

SELECT COUNT( qhc.countries_id) AS counter, q.question, co.name 
FROM questions AS q , countries as co, questions_has_countries AS qhc
WHERE qhc.questions_id = q.id 
AND co.id = qhc.countries_id
GROUP BY question
HAVING counter = 2

これまでのところ、私はこれを持っていますが、どういうわけか大丈夫だと思われますが、うまくいきません:

$criteria = new CDbCriteria(); 
$criteria->select = 'question, COUNT(countries_id) as counter';
$criteria->with = array('countries', 'categories');
$criteria->addInCondition('countries.id' , $_POST['Questions']['countries']);
$criteria->group = 'question';
$criteria->having = ('counter = 1');
$model = Questions::model()->findAll($criteria)

助けてください、私はYiiフレームワークにかなり慣れていません。

ありがとう。

ログからのSQL:

SELECT `t`.`question` AS `t0_c1`,
COUNT(countries_id) as counter, `t`.`id` AS `t0_c0`, `countries`.`id` AS
`t1_c0`, `countries`.`name` AS `t1_c1`, `categories`.`id` AS `t2_c0`,
`categories`.`name` AS `t2_c1` FROM `questions` `t`  LEFT OUTER JOIN
`questions_has_countries` `countries_countries` ON
(`t`.`id`=`countries_countries`.`questions_id`) LEFT OUTER JOIN `countries`
`countries` ON (`countries`.`id`=`countries_countries`.`countries_id`) 
LEFT OUTER JOIN `questions_has_categories` `categories_categories` ON
(`t`.`id`=`categories_categories`.`questions_id`) LEFT OUTER JOIN
`categories` `categories` ON
(`categories`.`id`=`categories_categories`.`categories_id`)  WHERE
(countries.id=:ycp0) GROUP BY question HAVING (counter = 2). Bound with
:ycp0='1'
4

3 に答える 3

1

togetherセットしてみるCDbCriteria

...
$criteria->together = true;
$model = Question::model()->findAll($criteria);
于 2013-09-16T00:10:50.937 に答える
0

「カウンターとして」を使用する場合、モデルには「カウンター」という名前のプロパティが必要です。そうしないと、モデルに読み込まれません。

「counter」という名前のプロパティがない場合は、現在選択していない別のモデル プロパティを使用してみてください: 「as someColumn」

の代わりに condition または addCondition または .. を使用します。

乾杯

于 2013-09-15T13:03:06.713 に答える