Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एसक्यूएल प्रश्नों के साथ डेटा मैपर का उपयोग कैसे करें

इस तक पहुंचने के कई तरीके हैं, यह उनमें से एक है। मान लें कि आपके पास इसके समान एक db स्कीमा है:

अब आपके पास उन वस्तुओं को डीबी से लाने के लिए जिम्मेदार एल्बममैपर और आर्टिस्टमैपर हो सकते हैं:

interface AlbumMapper {

    /**
     * Fetches the albums from the db based on criteria
     * @param type $albumCriteria
     * @param ArtistMapper $artistMapper
     * 
     * Note: the ArtistMapper here can be also made optional depends on your app
     */
    public function fetchBySomeCriteria($albumCriteria, ArtistMapper $artistMapper);
}

interface ArtistMapper {

    /**
     * @param array $ids
     * @return Artist[]
     */
    public function fetchByAlbumIds(array $ids);
}

मैंने रखा है कि एल्बममैपर को आर्टिस्टमैपर की आवश्यकता होती है, इसलिए इस मैपर के साथ एल्बम हमेशा अपने कलाकारों के साथ लौटाए जाते हैं। अब एक उदाहरण कार्यान्वयन इस तरह हो सकता है जहां मैं कलाकार को एल्बम से जोड़ने के लिए एक छोटी अनुक्रमणिका चाल का उपयोग करता हूं:

class ConcreteAlbumMapper implements AlbumMapper {

    public function fetchBySomeCriteria($albumCriteria, ArtistMapper $artistMapper) {
        //sql for fetching rows from album table based on album criteria

        $albums = array();

        foreach ($albumRows as $albumRow) {
            $albums[$albumRow['id']] = new Album($albumRow);
        }

        $artists = $artistMapper->fetchByAlbumIds(array_keys($albums));

        //marrying album and artists
        foreach ($artists as $artist) {
            /**
             * not crazy about the getAlbumId() part, would be better to say
             * $artist->attachYourselfToAnAlbumFromThisIndexedCollection($albums);
             * but going with this for simplicity
             */
            $albums[$artist->getAlbumId()]->addArtist($artist);
        }

        return $albums;
    }

}

इस मामले में आपका एल्बम निम्न की तर्ज पर होगा:

class Album {

    private $id;
    private $title;
    private $artists = array();

    public function __construct($data) {
        //initialize fields
    }

    public function addArtist(Artist $artist) {
        $this->artists[] = $artist;
    }

}

इस सब के अंत में आपके पास उनके कलाकारों के साथ आरंभ किए गए एल्बम ऑब्जेक्ट का एक संग्रह होना चाहिए।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सी # mysql योग क्वेरी लेबल करने के लिए

  2. MySQL में INTERVAL और CURDATE के साथ कार्य करना

  3. वास्तविक MySQL क्वेरी समय मापना

  4. डिफ़ॉल्ट बैचकॉन्फ़िगरर का उपयोग करने के लिए संदर्भ में एक से अधिक डेटा स्रोत नहीं होना चाहिए, पाया गया 2

  5. SQL सिंटैक्स का उपयोग करके MySQL तालिका से अंतिम रिकॉर्ड का चयन कैसे करें