【问题标题】:Zend Framework Multiple Table QueryZend Framework 多表查询
【发布时间】:2010-04-28 22:00:12
【问题描述】:
我希望通过 Zend Framework 执行此语句。据我了解,我可以使用 Zend_Db_Select。 Zend_Db_Table 可以用吗?
三个表:classes、students和class_students
从学生、班级、班级学生中选择 classes.name、students.student_id、students.fname、students.lname where class_students.student_id=students.student_id AND class_students.class_id=classes.class_id;
【问题讨论】:
标签:
php
mysql
zend-framework
【解决方案1】:
是的,是可能的——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,或者构建我的老式查询(SQL 字符串),并使用我的 db 对象获取它。
希望对你有帮助:)
M.