8

MVCについて質問です。特にモデルについて。データベースにカテゴリ テーブルがあるとします。ここで、詳細ビューの 1 つのカテゴリとリストの複数のカテゴリの両方の結果を取得したいと考えています。また、さまざまな目的で多数のカテゴリを照会する必要がある場合もあります。

問題は次のとおりです。2 つの別々のモデルを使用する方が理にかなっていますか。単一のカテゴリに対する操作のカテゴリ モデルと、複数のカテゴリに対するカテゴリ モデルの操作が似ています。

私の考えでは、categoryモデルを使用している場合、複数のカテゴリに追加の詳細は必要ありません。したがって、これらを分離することは私にとって理にかなっています。しかし、よくわかりません。

何か案は?

4

6 に答える 6

5

問題は、モデルが単一および複数のレコード クエリの処理をサポートする必要があるということです。

したがって、私のアドバイスは、1 つのモデルを使用して、必要な正確なデータを取得する方法を開発することです。

1 つのデータ ソースに対して 2 つのモデルを使用すると、作業が複雑になるだけです...

于 2012-01-20T22:31:50.030 に答える
2

場合によっては、単一のカテゴリと複数のカテゴリに異なるデータを保存する必要がありますか?

もしそうなら、あなたの提案は、そうでなければあなたのモデルに冗長なフィールドがあるのと同じように理にかなっています。両方のモデルを明確に区別することをお勧めします(したがってCategoryCategoriesではなく、たとえばSingleCategoryMultipleCategories)。

そうでない場合は、カテゴリに対して1つのモデルを使用することをお勧めしますが、単一および複数のカテゴリ操作に対して異なる操作を定義します。これがあなたの状況だと思います。

後者の場合、抽象スーパークラスを利用して、Category2つの子を定義できます。1つは単一のカテゴリの操作を含み、もう1つは複数のカテゴリの操作を含みます。

于 2012-01-23T12:52:34.423 に答える
1

同じデータ収集に複数のモデルを使用する理由がわかりません。

MVCでは、モデルはデータのコレクションを表します。単一または複数のアイテムにすることができます。特定のモデルが単一のアイテムのみを表す場合でも、それはデータ収集の一部です。

なぜ2つの別々のモデルを使用することを考えているのですか?

于 2012-01-24T11:45:04.013 に答える
1

独自の MVC と ORM で行ったことは、複数のモデル インスタンスに対する操作のラッパーを作成したことです。これはResultSetです。結果セットは、たとえば、カテゴリ モデルの配列に対して操作を実行できます。

参考:https ://github.com/Tuxion/tuxion.cms

于 2012-01-29T13:22:52.973 に答える
0

それはあなた次第です!

あなたはプログラマーです。

ただし、私の推論を追加するには:

可読性と保守性という点では、単一のモデル クラスの方が優れています。

例えば

    class get_fruits 
{

function all_fruit(){}

function one_fruit(){}
}

これは、コードを読んでいる別のプログラマーが理解するのは非常に簡単です。

例えば

$get = new get_fruit();
$europeanfruits = $get->all_fruits("European");
$apple = $get->one_fruit ("Apple");

お役に立てれば!

それがあなたのために働く限り、正しいまたは間違った解決策はないことを忘れないでください!

于 2012-01-26T10:54:24.270 に答える
0

私の意見では、使用している言語によって提供されるリスト、配列、コレクションなどは、モデルのコレクションの有効な選択肢であり、実際には何も達成しないため、このコレクションを単にラップする追加のモデルを作成するべきではありません。インターフェースをコレクションに関連付けたい場合は、コレクションをモデルにラップすることを検討してください。

コレクションに関する追加情報を特に保存する必要がある場合は、別のモデルでラップする必要があります。

また、データは同じデータ ソースから取得されているため、複数のモデルを使用すべきではないという考えにも同意しません。実際、モデル自体にデータベース ロジックを配置するのではなく、ビジネス オブジェクトを返す別のサービスを使用するべきだと思います。このレベルのカプセル化により、高レベル モデル (またはビジネス オブジェクト) をアプリケーション レベルで操作しながら、これらのオブジェクトからデータ アクセス ロジックを切り離すことができます。その後、データベースを別のものに交換する必要がある場合は、データ アクセス ロジックとモデルを作成するインターフェイスを置き換えるだけで済みます。

于 2012-01-27T13:57:30.860 に答える