2010-04-28 3 views
1

Я ищу для выполнения этого утверждения через Zend Framework. Насколько я понимаю, я могу использовать Zend_Db_Select. Можно ли использовать Zend_Db_Table?Zend Framework Multiple Table Query

три таблицы: классы, студенты и class_students

выберите classes.name, students.student_id, students.fname, students.lname от студентов, классов, class_students где class_students.student_id = students.student_id И class_students. class_id = classes.class_id;

ответ

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 или структурировать мой запрос в стиле старой школы (строка SQL) и извлечь его с помощью моего объекта db.

Надеется, что это помогает :)

М.