Karmaşık NEREDE Zend_Dd ile yan tümcesi birden fazla VE VEYA operatörlerini kullanarak

0 Cevap php

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!

0 Cevap