Ile ilgili en iyi yaklaşım, Zend Framework katılır?

1 Cevap php

Well it is more like a design question. There are two ways I know to use joins in the Zend Framework

  1. (Kendini Seç obj) Zend tablo örneğini kullanarak Deal
  2. Zend Db örneğini kullanarak onunla uğraşmak (kendi seç obj)

İlk yaklaşım bana gerçekten garip görünüyor - Ben bu veri ile fırsatlar olduğunu varsayalım - bazı masa ben yöntemi adı getData okurken en az (), oldukça iyi, dağınık değil de, hangi diğer tablolar ile ilgili olması kendi.

Second one it is quite better, you can have some class that acts as a service - NodeService, and it will deal with tables node and node_translation ,but it also arises question why would we need Zend Table in this case. I hope I could explain myself good enough thanks.

1 Cevap

Teknik olarak, Zend_Db_Select ve Zend_Db_Table_Select atıfta edilir. Zend_Db ve Zend_Db_Table katıldığınız için izin vermez.

Kimden ZF manual on the Select API in chapter Zend_Db_Table :

Zend_Db_Table_Select nesne sorguya belirli kısıtlamalar geçerlidir Zend_Db_Select nesnenin bir uzantısıdır. Geliştirmeleri ve kısıtlamalar şunlardır:

  • Bir fetchRow veya fetchAll sorgu içindeki sütunlarda bir alt dönmek için seçebilirsiniz. Bu, tüm sütunlar için sonuç büyük bir set dönen arzu değildir optimizasyon faydalar sağlayabilir.
  • Seçilen tablonun içindeki ifadeleri değerlendirmek sütunları belirleyebilirsiniz. Ancak bu iade satır veya satır salt okunur olacak ve save () işlemleri için kullanılamaz anlamına gelecektir. A (save) işlem denendiğinde ise salt okunur durumundaki bir Zend_Db_Table_Row bir istisna atar.
  • Çoklu masa aramalarını sağlamak için bir seçme ile ilgili hükümler JOIN izin verebilirsiniz.
  • Siz sütunlar belirtebilirsiniz edilemez bir satır / satır kümesi iade edilecek masaya JOINed. Aksi takdirde PHP hata tetikleyecektir. Bu Zend_Db_Table bütünlüğünün muhafaza emin olmak için yapıldı. yani bir Zend_Db_Table_Row sadece ana tablodan türetilmiş sütunlar başvuruda bulunmalıdır.

Temel fark, Zend_Db_Table ve bir tabloya doğrudan erişim sağlar ve bu satırlar var ve tablo CRUD için yöntemler aramak için olanak sağlayan bir Table Data Gateway olarak Zend_Db_Table_Select eylemidir , oysa Zend_Db_Select değildir ve bağımsızdır.