web-dev-qa-db-ja.com

Joomlaにモデルとテーブルの両方があるのはなぜですか?

クラシックMVCでは、基礎となるデータベーステーブルに大まかに対応するモデルがあります。 Joomlaがモデルとテーブルの両方を必要とするのはなぜですか?

編集

提供されたリンクからの引用:

要約すると、このモデルはビジネスロジックとデータベース内のデータエンティティのテーブルに焦点を当てています。エンティティとは、データベースのテーブルの単一の行を意味します。

「それでは、JModelクラスは1つ以上のJTableクラスをプロパティとして持つでしょうか?」

それがアイデアです。

5
Olle Härstedt

クラスJTableは、データベースオブジェクトに対して厳密に機能するように作成されます。テーブルオブジェクトは、データベース内のデータを作成、変更、削除、チェックする必要があります。多くのモデル、ヘルパー、モジュールで使用できます。 1つのモデルで複数のテーブルを使用する必要がある場合があり、多くのモデルで発生する可能性があります。 JTableを使用する場合、単一のテーブルレコードを取得または変更するためだけに、すべてのモデルでSQLを書き換える必要はありません。 JTableの変更は、テーブルが使用されたすべての場所で機能することは言うまでもありません。

クラスJModelは、データを処理するために作成されます。通常、データベースデータだけでなく、ファイル、画像、または単純な計算でも機能します。モデルはJTableを必要としません。それなしで動作するJModelを簡単に作成できます。しかし、たとえば複雑なポータルでユーザーアカウントを作成する必要がある場合、ユーザーデータが単一のテーブルだけでなく、他のテーブルのサンプルデータやレコードで構成される可能性があります。 JTableを使用すると、CRUDメソッドの作成にかかる時間を節約でき、あらゆる場所で単一のテーブルが使用されることを確認できます。SQLは常に最新の状態になります。

これら2つを分離することで、開発者はデータベースに厳密に関連付けられていないさまざまな拡張機能を作成できます。たとえば、モデル内のギャラリーは、データベースオブジェクトだけでなく画像でも機能します。開発者は画像処理コードを記述し、データベースを作成および更新するSQLをJTableに残します。

最初は少しわかりにくいかもしれませんが、いくつかの拡張を行うと、実際に役立つことがわかります。拡張機能が大きいほど、JTable + JModelが開発者の時間を節約できます。唯一の問題は、ドキュメントで適切に説明されていないことです。

ここにいくつかの便利なリンクがあります

3
Artur Stępień