0

我有以下 mysql 查询,当我执行它时它在 phpmyadmin 中运行良好:

"SELECT * FROM accounts_users WHERE id = ( SELECT teacher_id FROM general_teacher_student_associations WHERE student_id = 509 )";

但是当我通过 Yii 执行时,它会中断:

    $query          = "SELECT * FROM accounts_users WHERE id = ( SELECT teacher_id FROM general_teacher_student_associations WHERE student_id =509 )";
    $command        = Yii::app()->db->createCommand($query);
    $teachers_list  = $command->query();
    return $teachers_list;

509 是动态获取的值。

1.我做错了什么?

2. 这可以以更好的方式完成吗?

/******Edited***********/

发现错误:子查询返回多行。我可以使用单个查询来获取所有值,而不是使用 foreach 循环然后在其中执行另一个查询吗?

解决方案:( 接受丹尼尔斯的回答,因为他的评论实际上解决了这个问题)

    $query          = "SELECT * FROM accounts_users WHERE id IN ( SELECT teacher_id FROM general_teacher_student_associations WHERE student_id =509 )";
    $command        = Yii::app()->db->createCommand($query);
    $teachers_list  = $command->queryAll();
    return $teachers_list;

ps:这是一个版本的作品,我不允许触摸模型,因此使用模型关系不在窗口,这就是我最终得到这个的原因

4

1 回答 1

1

尝试:

$teachers_list = Yii::app()->db->createCommand()->select('ausers.*')
        ->from('accounts_users ausers')
        ->join('( SELECT teacher_id FROM general_teacher_student_associations WHERE student_id = 509 ) as teachers ON teachers.teacher_id = ausers.id')
        ->queryRow();
于 2013-09-02T10:01:49.597 回答