1

わかりました、これを適切に説明できることを望んでいるので、ここに行きます。私は phpActiveRecord を使用しており、別の関連付けを通じて特定の関連付けを作成しようとしています。実際の問題なしにそれらを作成できたので、リンクテーブルを使用した多対多ではありません。詳細を教えてください...

これは既存のデータベース スキーマであり、テーブルまたはフィールドに名前を付けるときに AR を考慮して設計されていません。すべてのテーブルは単一の参照にあり、他のテーブルを参照するすべてのフィールドには「fk_」というプレフィックスが付けられ、通常の命名スキーマに従っていません。関連付けは、記事から Web サイト、クライアントへと続きます。クライアントは多くの Web サイトを持つことができ、Web サイトは多くの記事を持つことができます。目標は、ウェブサイトを通じて記事からクライアントを参照できるようにすることです。これまでのところ、これは私が持っているものです:

Client
  $has_many (
    array('websites', 'foreign_key' => 'fk_client_id')
  )

Website
  $belongs_to (
    array('client', 'foreign_key' => 'fk_client_id')
  )
  $has_many (
    array('articles', 'foreign_key' => 'fk_website_id_client')
  )

Article
  $belongs_to (
    array('client_website', 'class_name' => 'Website', 'foreign_key' => 'fk_website_id_client'),
    array('client', 'through' => 'client_website')
  )

コードの一部を簡略化したので、いいえ、「=」記号などを忘れていません。これで、 にアクセスするclient_websiteと適切なオブジェクトが返されるため、関連付けが機能します。反対方向へのドリルダウンも機能し、クライアントごとに複数の Web サイトと、Web サイトを介した複数の記事を表示できます。これはうまくいくはずです...基本的なものが欠けているだけですが、見つけられないようです。フィールド名の付け方がおかしくなっているような気がしますが、確認できません。

これについて助けてくれてありがとう!

4

0 に答える 0