Zend框架多表查询

时间:2010-04-28 22:00:12

标签: php mysql zend-framework

我希望通过Zend Framework执行此语句。据我了解,我可以使用Zend_Db_Select。是否可以使用Zend_Db_Table?

三个表:班级,学生和class_students

从学生,班级,class_students中选择classes.name,students.student_id,students.fname,students.lname,其中class_students.student_id = students.student_id AND class_students.class_id = classes.class_id;

1 个答案:

答案 0 :(得分:2)

是的,可能 - Zend_Db_Table为您提供了一个在表上执行各种操作的接口。例如,考虑到您要执行的多表选择,并假设您已正确配置了数据库适配器,我们最终可能会遇到以下内容:

$table = new Model_DbTable_Classes(); // which extends Zend_Db_Table_Abstract
$select = $table->select()->setIntegrityCheck(false);
$select->join('class_students', 'class_students.class_id = classes.class_id')
       ->join('students', 'student.student_id = class_students.student_id')
       ->where('classes.class_id = ?', 1)
       ->where('student.student_id = ?', 10);

$result = $table->fetchAll($select);

print_r($result->toArray());

对于这种特殊情况,我不会使用Zend_Db_Table,当我只需要对一个表执行操作时,我倾向于使用Zend_Db_Table。对于多个表选择,我宁愿选择db select,也可以构建我的查询old-school-fashioned(SQL字符串),并使用我的db对象获取它。

希望有所帮助:)

微米。

相关问题