Zend_Db adaptör değil / Zend_Db_Expre

2 Cevap php

Ben (Zend_Db_Table uzanan değil) sadece standart bir sınıf Bir model için bir çağrı var. Ben bir seçme yapıyor ve bir değişken olarak geçirilen olacak kimlikleri bir dizi hariç olanağına sahip olmak istiyorum duyuyorum.

Ben curently şu var:

public function getItemsBySection($section, $excluded_ids=null){
    //handle this as special case (although only case at this point)

    if(is_array($excluded_ids) and count($excluded_ids)>0){
        $x=1;
        foreach($excluded_ids as $key=>$value){
            if($x==1){
                $not_in=$value;
            }else{
                $not_in.=','.$value;
            }
            $x++;
        }
    }

    if($section=='feed_supplies'){
        $sql='select * from items where is_feed_supply=1';
        if($not_in){
            $sql.=' and id not in ('.$not_in.')';
        }
    }

    echo $sql . '<br/>';

    $results=$this->_db->fetchAll($sql);

belirli öğeleri dışlama işlemek için Zend_Db_Expre veya başka concstruct kullanmak için bir yolu var ama eğer merak ediyorum? Ben, vb bir tamsayı ise hata işleme gibi değilim ..

Ben şahsen Zend_Db_Select sözdizimi bir fan büyük değilim ama bu gibi şeyler giderir (Doctrine2 görmek istiyorum) ikna olabilir.

teşekkürler

2 Cevap

Ben Zend_Db_Expre kullanma konusunda emin değilim, ama değer not_in senin $ inşa etmek için tüm bu ilk döngü gerekmez.

$not_in = implode( ',', $excluded_ids );
$select = $db->select();
$select->from('items')
       ->where('is_feed_supply = ?',1)
       ->where('id NOT IN (?)', $notInArray);

$ NotInArray (en azından ints) otomatik AFAIK imploded edilecektir. Sonra

$yourSQL = $select->__toString();

Zend_Db_Select kayalar: D

Ve bu arada: standartlarını kodlama sopa çalışın