Ben bu karmaşık Zend_Db'nin fıkra oluşturmak istiyorum:
SELECT *
FROM 'products'
WHERE
status = 'active'
AND
(
attribute = 'one'
OR
attribute = 'two'
OR
[...]
)
;
Bu denedim:
$select->from('product');
$select->where('status = ?', $status);
$select->where('attribute = ?', $a1);
$select->orWhere('attribute = ?', $a2);
ve üretilen:
SELECT `product`.*
FROM `product`
WHERE
(status = 'active')
AND
(attribute = 'one')
OR
(attribute = 'two')
;
Ben bu işi yapmanın bir yöntemi anlamaya yaptım ama ben bu sıralamayı ilk "VEYA" hükümler birleştirmek ve daha sonra Zend_Db () yan kullanarak onları birleştirmek için PHP kullanarak 'hile' hissettim. PHP kodu:
$WHERE = array();
foreach($attributes as $a):
#WHERE[] = "attribute = '" . $a . "'";
endforeach;
$WHERE = implode(' OR ', $WHERE);
$select->from('product');
$select->where('status = ?', $status);
$select->where($WHERE);
İşte aradığım ne üretti. Bu karmaşık almanın bir "resmi" bir yolu var ama eğer ben merak ediyorum WHERE deyimi yerine ilk PHP ile birleştirerek Zend_Db aracını kullanarak (gerçekten sadece bazı parantez ekleyerek, çok karmaşık değil).
Şerefe!