まず、私がORMの初心者であることを伝えたいと思います。私は人生でORMを使用したことがなく、Codeigniterを使用しているときに、DatamapperOverzealousEditionが役立つと信じているクレイジーで高度な関係を実行する必要があるという日々の開発の段階に達しました。
私のデータベースには、次のテーブルがあります。
ユーザー
プロジェクト
クライアント
タスク
これがテーブル間の私の望ましい関係です。
- ユーザーは多くのプロジェクトに所属できます。
- プロジェクトには複数のタスクを含めることができますが、クライアントを1つだけ持つことができます。
- クライアントは多くのユーザーを持つことができ、多くのプロジェクトを持つことができます
- タスクは1つのプロジェクトのみを持つことができます
ドキュメントに記載されているように、モデルディレクトリにモデルを設定しようとしましたが、最後にsが付いていないモデル名なので、ユーザーにはuser.phpモデルなどがあります。
ドキュメントが素晴らしいことは知っていますが、明らかに非常に簡単であるにもかかわらず、正しく理解できないようです。たとえば$u= new User();を実行して、モデルをインスタンス化することを知っています。コントローラの内部ですが、私の質問はモデルの内部で関係を設定することです。
上記の関係を持つようにモデルを設定するにはどうすればよいですか。たとえば、タスクをフェッチするときに、タスクが属するプロジェクトと、関連するデータベーステーブルからの情報のヒープ全体を確認できます。
ドキュメントでは、プロジェクトモデル内で次のように使用していることに気付きました。これは、プロジェクトに複数のタスクを含めることができることを示しているはずです。 var $has_many = array('task')
それだけですか?$has_many変数と$has_one変数を定義し、関連するモデル名を配列に入れるのと同じくらい簡単ですか?