(Zend Framework) satır başına birden çok satır döndüren

2 Cevap php

Bu tabloları içeren bir MySQL veritabanı var:

sessions
--------
sessionid (INT)
[courseid (INT)]
[locationid (INT)]
[comment (TEXT)]

dates
-----
dateid (INT)
sessionid (INT)
date (DATE)

courses
-------
...

locations
---------
...

Her oturum için benzersiz bir SessionId vardır ve her tarih benzersiz bir dateid vardır. Bir oturumu (mutlaka arka arkaya değil) tarihleri ​​değişken sayıda üzerinde yayılabilir Ama tarihleri ​​mutlaka benzersiz bir SessionId yok.

Her tam satır seçilmesi sadece oturum kimliği üzerindeki tabloları katılma meselesidir. Ancak, bu satır her satır bir konumu temsil eder, ve sırayla tüm içeren başka satırkümesi, içeren başka bir satır kümesi, her içeren tek bir oturumda, içeren belirli bir CourseID için bir satır geri dönmek için bir yol arıyorum bu oturum için Tarihleri:

course
    location
        sesssion
            date
            date
        session
            date
            date
            date
    location
        ...

Ben bir nesne yönelimli bir şekilde satır ve satır kümesi işlemek için mükemmel bir arayüzü var Zend Framework, PHP kullanarak bu veritabanını sorgulayarak kullanıyorum çünkü bu.

Sonuçta, ben çıktı sonra kurs tarafından ilk organize görünümüne bir 'zamanlama', sonra yer, tarih çalışıyorum. İdeal olarak, bir yerde her satırın üzerinde mümkün yineleme olacak, ve sonra her yer için, her seans üzerinden yineleme, ve sonra her oturum için, her bir tarih üzerinden yineleme olur.

Ben ayrı ayrı her yerle oturumları ve tarihler için sorgulayarak bu yapmayı düşünüyorum. Sonra, ben bir diziye her satırkümesi dönüştürmek, ve bir yerleri dizinin bir üyesi olarak her seans dizisi eklemek ve bir seans dizinin bir üyesi olarak her tarihleri ​​dizisi eklemek istiyorum.

Bu, ancak, çok kıytırık hissediyor ve bir nesne yönelimli bir şekilde satırları işlemek için yeteneği ile beni sağlamaz.

Olduğunu merak ediyordum ya:

a) Bu veri temsil için daha iyi bir tablo şema;

Ben farkında değilim b) bir sql sorgusu;

bana bir satır için bir satır atamanızı sağlar Zend_Db'nin c) bir yöntem

Ben her yerde net değil varsa lütfen bana bildirin, ve şimdiden teşekkürler.

(Bu günlük wtf kadar bitmiyor parmaklarımı Geçişi ...)

2 Cevap

Ben birden fazla tablodan veri ile uğraşmak zorunda Zend Altyapıları veritabanı soyutlama sınıfları kullanarak sorunları çok çalıştırmak. Koşmak sorgular ve oluşturulan nesnelerin tüm yükü sayı dizleri benim sunucu barındırma getirdi. O zamandan beri benim tüm verileri toplamak ve sonra benim ekranı oluşturmak için verileri yürüyen sorguları yazma geri döndürülür ettik. Bu soyutlama katmanları kullanma gibi bir güzel veya OO değil ama o da sadece veri tam bir tablosunu görüntülemek için diske benim PHP betikleri sayfa yapma değil.

Steve ile sona her türlü çözümü kriter bahseder gibi, ben de hafıza kullanımını profili ediyorum.

Sen Zend_ Db_ Tablo ilişkisi özelliklerini kullanarak bu senaryoyu ele verebilir. Sen şu anda sorguları için Zend_ Db_ Aadpter kullanıyorsanız eğer vb oturumlar için masa sarıcı sınıflar, tarih, dersleri oluşturmak gerekir.

http://framework.zend.com/manual/en/zend.db.table.relationships.html

Bu, ayrı ayrı her bir veri kümesi için sorgulama açıklanan yaklaşımından çok farklı değil, ama bu size verilen bir rekor için uygun ilgili verileri almak için yalındır OO arayüz sağlar.

Bu rota giderseniz potansiyel çok fazla sorgu yürütebilir gibi, bazı kıyaslama yapmak isteyeceksiniz.