选择在另一个表中没有关系的行

时间:2014-03-04 18:44:51

标签: php mysql yii

我正在开发一款User可以Answer某些Questions的游戏。 我正在尝试创建一个控制器操作,以返回Question尚未回答的User {A Question,其中没有Answer与记录的User相关联WHERE NOT EXISTS })。

我的代码尝试无法正常运行。

  • 我发现了mysql命令Yii Framework,我认为它可以做到这一点,但我不知道如何在$criteria=new CDbCriteria; $criteria->with=array('answers'=>array('condition'=>'user_id='.Yii::app()->user->id)); $criteria->having='count(answers.id)=0'; $model=Question::model()->findAll($criteria); 中使用它。

数据库:

enter image description here


控制器操作:(无法正常工作)

{{1}}

2 个答案:

答案 0 :(得分:0)

您可以将DAO与Yii一起使用,这是与数据库交互的最直接方式。 http://www.yiiframework.com/doc/guide/1.1/en/database.dao

答案 1 :(得分:0)

我找到了如何在Yii Documentation进行搜索。


代码:

$sql = 'SELECT * FROM question WHERE NOT EXISTS (SELECT * FROM answer WHERE answer.user_id='.Yii::app()->user->id.' AND answer.question_id=question.id);';
$question = Yii::app()->db->createCommand($sql)->setFetchMode(PDO::FETCH_OBJ)->queryRow();

的信息:

setFetchMode(PDO::FETCH_OBJ)用于将data作为object返回,因此可以像$question->id一样访问它。