Zend Dd satır kümesi Üst sıra oluyor

1 Cevap php

I am wondering about using the abstraction in Zend Db RowSet instead of joins, is it possible for instance I am able to get some info from parent table as in here

/**
 * Get default photo info (path , description)
 */
public function getDefaultPhotoInfo($userdId){

    $select = $this->select($this)
            ->where('id=?', $userdId);
    $rowset = $this->fetchAll($select);
    $current = $rowset->current();

    $res = $current->findParentRow('UserPhotos', 'Avatar');
    if(isset($res)){
        return $res->toArray();
    }
}

Bunu nasıl mantık çalışma almak için Rowset soyutlama kullanabilirsiniz

table( id, pic_path,) table_translation(id, table_id, lang_id, pic_title);

iki tablo temsili üzerinde, fikir lang_id belirterek her iki tablodan bilgi almak için, bu katıldı kolay ama ben DB satır kümesi soyutlama ile yapabilirsiniz?

1 Cevap

Sadece açıklama için: fetchAll bir Zend_Db_Table örneğinde yaparken, sen Iterator arabirimini uygulayan bir Zend_Db_Table_Rowset olsun. Böylece, satır kümesi örneğinde, bir Zend_Db_Table_Row örneğini dönecektir current() çağırıyor.

ZF1.10 itibariyle, bir Zend_Db_Table_Defintion örneği ya da benzeri bir somut tablo örnek tablolar arasındaki ilişkileri tanımlamak reference guide for Zend_Db_Table İlişkiler nitelendirdi. Kılavuz oldukça detaylı olduğundan, ben burada bu yeniden olmayacaktır.

Eğer ilişkileri tanımlanmış sonra, (example 1 from guide) ile arka arkaya onları getirebilir

  $accountsTable = new Accounts();
  $accountsRowset = $accountsTable->find(1234);
  $user1234 = $accountsRowset->current();       
  $bugsReportedByUser = $user1234->findDependentRowset('Bugs');

veya sihirli bulucu yöntemlerle.

O üst satır var bir bağımlı satır kümesi tam satır dönmek gibi findParentRow() yöntemi, bu biraz farklı.

Ex5: Bu örnek tablo, Bugs bir satır nesne alma gösterir (örneğin durum 'YENİ' ile bu hataların biri) ve hata bildirilen kullanıcı için Hesapları tabloda satır bulma.

  $bugsTable = new Bugs();
  $bugsRowset = $bugsTable->fetchAll(array('bug_status = ?' => 'NEW'));
  $bug1 = $bugsRowset->current();
  $reporter = $bug1->findParentRow('Accounts');

Tablo ilişkileri kullanırken bir tarihi birinde hepsini yapar, oysa, bu zorlama bağımlı masa başına bir ek sorguda neden olacağını unutmayın.

Ayrıca bu ilgili soruya bakınız: