通常、Data Mapperは1つの特定のテーブルのデータをマップします。(理論的には、ストレージとドメインオブジェクトの間で通信する必要がありますが、私の場合は不可能なので、テーブルと直接通信しています。)
Table1Mappper> Table1
ただし、そのテーブルで別のテーブルからデータを結合する必要がある場合は、1つのテーブルからのマッピングのみを想定していたデータマッパーのスコープを拡張します。
Table1Mapper> Table1:inner-join:Table2
Table2がTable2Mapper
データをマップする独自のマッパーを持っていれば、もっと良いのではないでしょうか?
考えた場合Yes
、Table1Mapperからレコードのリストを表示し、後でTable2Mapperを使用して、結合されるはずだったデータを取得したい場合は、ループでクエリを実行することになりますが、どちらも適切ではありません。
この方法について、どのような洞察がありますか?
別の方法は、サブテーブルを処理するようにマッパーを変更することですか?
class Table1Mapper {
public main_table = 'table1';
public sub_table1 = 'table2';
}
これは問題ないと思いますが、マッパー全体のスコープがアプリケーション内の1つの特定のエンティティを処理するまでのみです。たとえばpost
とpost_author
。しかし、post
およびのようにスコープが異なる場合、gallery
上記は理想的なデータマッパーを提供しません。これを説明するには
class PostMapper {
public table_name = 'tbl_post';
public gallery_table_name = 'tbl_gallery';
}
正しくありませんか?ただし、1つのクエリで1つの投稿のギャラリーを取得する必要があります。ループでクエリのオーバーヘッドを追加することは、優れたソリューションパフォーマンスではないためです。
このようなケースを処理するより良い方法がある場合、DataMapperパターンまたは他のパターンでこれを解決する正しい方法は何だと思いますか?