0

2 つのテーブルからのデータを含むオブジェクトを取得する最良の方法はどれだろうと思っています。私の場合、portfolioItem テーブルと画像を含む別のテーブルにデータを持つポートフォリオ アイテムを取得したいと考えています。

現在、オブジェクト内のこれらのアイテムを取得する最良の方法はどれかについて苦労しています。最初の方法では、Data クラスで一度にすべてを取得し、完全なオブジェクトを返します。2 番目の方法では、2 つの異なるデータ クラス (一般的なポートフォリオ情報用と画像用) からオブジェクトを構築します。

今、私はただ疑問に思っていますが、他の方法よりも優れた方法はありますか、それとも両方の方法が受け入れられますか? すべてのデータを一度に取得しても問題ありませんか、それとも 2 番目の方法のように分割する必要がありますか?

私は2つのテーブルを持っています:portfolioItemとportfolioItemImageのようなクラスがあります

PortfolioItem{
    public $portfolioItemId;
    public $name;
    public $images //array
}

1:

$dataPortfolioItem = new DataPortfolioItem();
$theItem = $dataPortfolioItem->getPortfolioItem(5);
DataPortfolioItem{
    public function getPortfolioItem($theId){
        //create a new portfolio item
        //get the portfolio data from portfolioItem table and fill in the id and name
        //get the image data from image table and set the images array from the object
        //return the object with the data and images included
    }
}

2:

$dataPortfolioItem = new DataPortfolioItem();
$theItem = $dataPortfolioItem->getPortfolioItem(5);
$dataPortfolioItemImages = new DataPortfolioItemImages();
$theItem->images = $dataPortfolioItemImages->getPortfolioItemImages(5)

DataPortfolioItem{
    public function getPortfolioItem($theId){
        //create a new portfolio item
        //get the portfolio data from portfolioItem table and fill in the id and name
        //return the portfolio item     
    }
}

DataPortfolioItemImage{
    public function getPortfolioItemImages($theId){
        //get the images from the database table and return them in an array
    }
}
4

1 に答える 1

1

「私の場合、ポートフォリオのアイテムを取得したいのですが…」。その場合、Data Access Layer (DAL) は Portfolio オブジェクトを返す必要があります。Portfolio オブジェクトの一部を 2 つの個別のオブジェクトで返すのではありません。

デザインに関するいくつかの一般的なこと。アプリケーション ロジックはモデルに基づいている必要があり、データ ストレージの詳細を認識してはなりません。その場合、DAL は Model オブジェクトのみを提供する必要があります。

余談ですが、「ポートフォリオアイテムデータ用と画像用の2つの異なるデータレイヤーからオブジェクトを構築する方法」。レイヤーレイヤーとは、おそらくテーブルを意味します。レイヤーは別物です。

于 2012-11-05T18:21:21.737 に答える