2012-03-30 18 views
0

DataMapperを使用しているモデルで関係を設定していますが、壁に当たっています。Codeigniter Datamapper多対多の関係

私はRealEstateクラス、Clientクラス、Positionクラスを持っていますが、それらはすべて多対多の関係を持っています。

  1. Clientだから、それは簡単ですRealEstateを与えられたすべてのClientsを見つけるために別のRealEstate

Position「売り手」を持つことができますRealEstate

  • 同じClientPosition「買い手」を持つことができますそれに添付されているPositionのクライアントには、具体的にはRealEstateが含まれていますか?

  • 答えて

    1

    あなたのデザインが間違っていると思います。 ClientPositionの間の多対多の関係は、PositionRealEstateの間には1対多の関係があり、にあり、RealEstateにあります。 RealEstateClientの多対多の関係を効果的にエミュレートし、追加の情報(Position)が含まれています。問題領域の観点でいえば

    は、任意の役割(Position)は、特定のRealEstateに添付であるが、任意のはClientは、任意の役割の数と、任意のRealEstate缶を持つことができます(?)それに接続されている複数の役割を持っています。

    私はCodeIgniter 2を指先で持っていないので、コードサンプルを提供することはできませんが、本当に必要な場合は教えてください。私はCodeIgniter 2を自宅に持っています。

    +0

    私は、RealEstateクラス、Positionクラス、およびClientクラスを持っています。 RealEstateには、いくつかのポジションが付いています(これらのポジションにはクライアントが含まれています)。たとえば、RealEstate APPARTMENT1では、クライアントJohn Doeはポジションオーナーになりますが、別のRealEstate !RealEstates - - 顧客 - 体位 - (多くの多くの)Clients_Positions - Positions_RealEstates(多くの1つ) はどのように私は与えられた位置を持っているすべてのクライアントを取得することができます私のデータベースで 私は を持っていますRealEstate .Client_RealEstatesテーブルもあるべきですか? – Simon

    +0

    私はそうは思いません。生のクエリは、 'select * from clients?C join clients_positions cpどこcp.estate_id = $ estate_id'です。私はCI DataMapper libに精通していないので、このクエリをDataMapperコードに変換することはできません。 :) – J0HN

    +0

    こんにちは@ J0HN、私はそれを自分で修正することができました。だから私はクライアントと契約、不動産と契約、位置づけと契約の1対多の関係との多対多関係を標準化しました。契約テーブルとモデルは、他のすべてのオブジェクトのid/foreignkeysを持ち、どちらが接続されているかを知っています。あなたのご意見ありがとうございます! – Simon