我有一个包含两个表的MySQL数据库:
quiz_questions 有两列:
quiz_results
我想得到下一个没有任何结果的问题。换句话说,问题是在结果表中找不到ID的问题
我发现原始SQL是这样的:
SELECT
qq.question_id, qq.question
FROM
quiz_questions qq
LEFT JOIN
quiz_results qr
ON
qq.question_id = qr.question_id
WHERE
isNull(qr.user_id)
ORDER BY question_id ASC
LIMIT 1;
如何使用模型实现相同的目标?
由于
答案 0 :(得分:3)
我没有尝试过,但它可能会让你在某个地方开始。
问题模型中的
public function relations()
{
return array(
'results' => array(self::HAS_MANY, 'Result', 'question_id'),
);
}
在结果模型中
public function relations()
{
return array(
'question' => array(self::BELONGS_TO, 'Question', 'question_id'),
);
}
添加静态函数以提问
public static function getUnansweredQuestion() {
$criteria = new CDBCriteria();
$criteria->with =
array('result'=>array(
'select'=>false,
'together'=>true, // Do the join but discard the result values
);
);
$criteria->addCondition('t.question_id NOT IN
(SELECT question_id FROM quiz_results WHERE user_id = '.
User::model()->findByAttributes(
array('username'=>Yii::app()->user->name))->id.')');
$criteria->limit = 1;
$criteria->order = 't.id ASC';
return Question::model()->find($criteria);
}
希望有所帮助