我有以下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;
p.s:这是一个版本工作,我不允许触摸模型,因此使用模型关系是窗外的,这就是为什么我最终得到这个
答案 0 :(得分: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();