Zend Tüm sütunları seçer

2 Cevap php

Aşağıdaki kodu:


$selectColumns= array('user_id.user_email', // inner join the data from user_id and user_details
        					'user_details.first_name', 
        					'user_details.last_name');
        $result = $handle->select()->from('user_id', $selectColumns)
                                   ->where('user_id.uid=?', $uid)
                                   ->join('user_details', 'user_id.uid = user_details.uid')
                                   ->query(ZEND_DB::FETCH_OBJ);

Zend seçer tabloda all sütunlar, sadece istenen olanlardır.

Nasıl sadece bazı seçebilirsiniz?

2 Cevap

Sorun join() yöntem çağrısında bulunmaktadır:

->join('user_details', 'user_id.uid = user_details.uid')

İsteğe bağlı üçüncü argüman this tablodan sütun olduğunu. Argüman yok ise, varsayılan user_details.*.

Eğer from() tabloda, her iki tablodan nitelikli sütunlar eklenir, fakat bu user_details.*, varsayılan üzerinde hiçbir etkisi olmadığını unutmayın. Üzgünüz, ama Zend_Db_Select sadece tüm bu takip etmek kadar akıllı değildir.

Sen yapabilirsiniz join(), boş bir dizi geçerek hiçbir sütunlar eklemek çağırır:

->join('user_details', 'user_id.uid = user_details.uid', array())

Eğer from() çağrısı eklenen nitelikli sütunlar hala orada olmalı. Bu kendinizi doğrulamak için, SQL yazdırın:

print $result . "\n"; // calls __toString() method on Zend_Db_Select object

Boş bir diziye - senin sonunda katılmak için başka bir parametre ekleyin. Bu katılmak hiçbir sütunları seçmek için söyleyecektir. Şimdi var kodu ile, katıldı tablodaki tüm sütunları seçiyoruz.

->join('user_details', 'user_id.uid = user_details.uid', array())