背景:
- これは、フレームワークを使用せずに構築された MVC アプリケーション用ですが、MVC パラダイムに従います。
- RedBeanという ORM ライブラリを使用してデータベースと通信しています。
RedBean は「Bean」を使用してデータを表現しますが、モデルへのラップをサポートしているため、モデルによってカスタム関数が提供される場合があります。
$account = R::dispense('account'); $account->name = "john"; R::store($account); $account->getFormattedLastUpdatedTime('America/New_York');
今質問:
現在、モデルの各インスタンスは、データベース内の 1 つの行を表します。アカウントのコレクションがある場合、「アカウント」モデルの配列があります。
アプリケーションには、カスタム プロファイル フィールドの機能があります (心配しないでください。私は EAV を使用していません :))。テーブルの 1 つは、カスタム プロファイル フィールドのフォーム フィールドを生成するためのフィールド (名前、説明など) のメタデータを格納します。ここでも、メタデータの各行は 1 つのフォーム フィールドを表し、各行は 1 つのモデルで表されます。
ここで、これらすべての行をフォーム オブジェクトに変換するメソッドを作成して、フォームのレンダリングと処理に使用できるようにしたいと考えています。しかし、このメソッドはどこにあるのでしょうか? 私が最初に考えたのは、カスタム プロファイル フィールドのメタデータを表すモデルに配置することでした。
明確化: この関数はaccount
モデルではなく、profile_fields_meta
モデル内にあります。
問題
各モデルは 1 つの行を表す必要があるため、モデルがデータベース内の複数の行から生成されるオブジェクトを返すようにするのは少し「汚い」ようです。これが最善の方法ではないと言うのは正しいですか?代わりに何をすることをお勧めしますか?