зенд дб пересекаются - PullRequest
0 голосов
/ 20 июля 2011

Поддерживает ли объект Zend_Db_Select Intersect ?.Он поддерживает union (т. Е. Это возможно, $ db-> select-> union ($ sql1, $ sql2)), но когда я просматриваю документацию, такого метода, как intersect, нет.

Так как ещевозможно ли пересечение с Zend_Db?

1 Ответ

0 голосов
/ 20 июля 2011

Как бы я не хотел это говорить, но Zend_Db_Select не поддерживает ничего с INTERSECT. Вы должны будете использовать свою изобретательность, чтобы сделать это возможным. Вы можете расширить Zend_Db_Select, чтобы добавить эту функцию, или построить строку SQL и использовать адаптер для извлечения записей.

Не должно быть слишком сложно выполнить следующее, расширив Zend_Db_Select

$sql1 = new My_Db_Select($db);
$sql1->from('tbl1');
$sql2 = $db->select();
$sql2->from('tbl2');
$sql1->intersect($sql2); // alternate usage, $sql1->intersect($sql2, $sql3, $sql4);
echo $sql1; // prints SELECT * FROM tbl1 INTERSECT SELECT * FROM tbl2

Для этого вам нужно будет создать хранилище для ваших пересекающихся объектов при добавлении объектов с помощью My_Db_Select::intersect, а затем создать My_Db_Select::assemble для первого вызова $sql = parent::assemble, а затем перебрать части пересечения и добавить каждый вызов до assemble на каждом. foreach($intersect as $select) $sql .= ' INTERSECT ' . $select->assemble();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...