Birçok Tek-çok ilişkiler ile bir DAO sorgu oluşturma?

1 Cevap php

PHP ve MySQL ile bir web uygulama geliştiriyorum. Ben bunun içinde (diğer nesnelerle birlikte) çok bir-çok ilişkileri (Adresleri listesi, e-postalar listesi, phonenumbers listesi, vb) sahiptir adında bir varlık, Kullanıcı, var. Bunlar birçok adresleri, e-posta, telefon numaraları (user_link_addresses, user_link_emails, vb) veritabanında kavşak tablosu vasıtasıyla kullanıcıya verilir.

Ben şimdi kullanıcı varlık için etkili bir DAO oluşturmak çalışıyorum, özel yöntemler ($ UserID) ve readAllUsers () readUserById. Ben sql ve DAO desen de bir amatörüm beri Ancak, ben sorun bu doğru DAO oluşturma yaşıyorum.

Ben buna göre bu varlık eşlenebilir bir kez ve daha sonra tüm bilgileri okur bir sorgu için DAO tutmak için ağ verimlilik için önemli olduğunu söylendi. Bu mantıklı, ama ben sorun üreten gerekli her şeyi bilgi ve benim varlık doğru eşlenebilir var one sorgu yaşıyorum.

Sağ şimdi, kullanıcıların aldıktan sonra bir döngü içinde birden fazla sorgu yaparak bu bilgileri alabilirsiniz ... Ben sadece fikrini sevmiyorum (ve ben doğru değil eminim). Değil sadece bu karmaşık bir şey ile ve de doğru eşleştirilmesi gerekir - Ayrıca, ben nasıl yapılacağını biliyorum kavşak tablo ile katıldı.

TABLE NAMES AND FIELDS

TABLE: user FIELDS: user_id, username, password

TABLE: address FIELDS: address_id, street, city, state, zip_code, type

TABLE: email FIELDS: email_id, email, type

TABLE: phone_number FIELDS: phone_number_id, area_code, phone_number, type

- DERNEKLER İÇİN AYRIMI TABLOLAR -

TABLE: user_link_address FIELDS: user_id, address_id

TABLE: user_link_email FIELDS: user_id, email_id

TABLE: user_link_phone_number FIELDS: user_id, phone_number_id

Her neyse, bütün yardım büyük beğeni topluyor,

Steve

1 Cevap

Bazen sorguları içinde dernekler dahil buna değer ve bazen değil. Çalıştırır ve sizi sorgular ilişkili modelleri dahil hangi söyler gibi uygulama analiz Ruby on Rails için gerçekten temiz bir eklenti var.

Gibi bir şey deneyebilirsiniz:

SELECT *
    FROM `user` 
    INNER JOIN `user_link_addresses`
        ON `user`.id = `user_link_addresses`.user_id
    INNER JOIN `user_link_foo`
        ON `user`.id = `user_link_foo`.user_id

Bana tüm tablo adlarını ve alanlarını söyle, ben size daha özel bir sorgu yazmak yardımcı olabilir.