現在のプロジェクトに取り組んでいたとき、かなり複雑な問題に遭遇しました。私は今、私の問題をより詳細に指摘します:
User、UsersExtendedField、UsersExtended の3 つのモデルがあります。
UsersExtendedField には、手動で管理できるカスタム フィールドが含まれています。すべてのカスタム フィールドは [ユーザー] ビューにも表示でき、もちろん入力することもできます。次に、値は、user_id と field_id の 2 つのforeignKey を持つ UsersExtended に格納されます。
関係は次のようになります。
問題: ユーザー ビューにアクセスすると、ユーザー情報を入力するフォームが表示されます。すべての UsersExtendedFields も利用可能であり、これらには多数の UsersExtended があるため、多くの UsersExtended 値があります。しかし、それらを現在ビューが表示されているユーザーに属する値のみに減らしたいと思います。これが私の(望ましい)関係です:
Croogo::hookBehavior('User', 'Crooboard.ExtendedUser', array(
'relationship' => array(
'hasMany' => array(
'UsersExtendedField' => array(
'className' => 'Crooboard.UsersExtendedField',
'foreignKey' => '',
'conditions' => array('status' => 1)
),
),
),
));
class UsersExtendedField extends AppModel {
var $name = 'UsersExtendedField';
var $displayField = 'fieldname';
var $hasMany = array(
'UsersExtended' => array(
'className' => 'Crooboard.UsersExtended',
'foreignKey' => 'field_id',
'conditions' => array(
'UsersExtended.user_id = User.id'
)
),
);
}
これは完全なコードではなく、重要な部分です。問題は、「UsersExtended.user_id = User.id」と書いたところから始まります。明らかに、これは機能しません。しかし、ここで User.id にアクセスする方法がわかりません。また、このタスクを解決するための HABTM 構造を想像することもできませんでした。この「UsersExtended.user_id = User.id」のセマンティクスを機能させる方法を知っていますか?
これを読んで助けてくれてありがとう!