0

私が構築したbelongsToアソシエーションを尊重するためのmodel->find()呼び出しを取得するのに問題があります。

ここに協会があります:

var $belongsTo = array('User' => array('className'  =>'User',
                                       'foreignKey' => 'id',
                                   'fields'     => array('username')
                                       )
                      );

そして、ここに検索呼び出しがあります:

$this->set('broadcasters_list', $this->Broadcaster->find('all',  
                                                         array('fields'=>array('id')
                                                         )));

さて、非常に奇妙なことです。Broadcaster モデルでページネーション呼び出しを行います。呼び出されると、belongsTo 関連付けが尊重され、User モデルから必要な情報が返されます。

気をつけて、リー

編集:

作成中のクエリを確認しました。これが私が持っているものです。

検索コマンドの場合:

SELECT `Broadcaster`.`id` FROM `broadcasters` AS `Broadcaster` LEFT JOIN `users` AS `User` ON (`Broadcaster`.`id` = `User`.`id`) LEFT JOIN `images` AS `profile_image` ON (`profile_image`.`user_id` = `Broadcaster`.`id` AND image_type = 3) WHERE 1 = 1 

ページネーション呼び出しの場合:

SELECT `Broadcaster`.`id`, `Broadcaster`.`key_id`, `Broadcaster`.`session_id`, `Broadcaster`.`broadcast_mode`, `Broadcaster`.`next_guest_id`, `Broadcaster`.`one_to_one_credits`, `Broadcaster`.`one_to_many_credits`, `Broadcaster`.`avilable_for_private`, `Broadcaster`.`connect_type`, `Broadcaster`.`commission`, `Broadcaster`.`credits`, `Broadcaster`.`enabled`, `User`.`username`, `profile_image`.`file_id` FROM `broadcasters` AS `Broadcaster` LEFT JOIN `users` AS `User` ON (`Broadcaster`.`id` = `User`.`id`) LEFT JOIN `images` AS `profile_image` ON (`profile_image`.`user_id` = `Broadcaster`.`id` AND image_type = 3) WHERE `enabled` = 1 LIMIT 10

取得されるフィールドを除いて、すべて同じように見えます。そこに何かが欠けていますか?

4

1 に答える 1

0

あなたは間違ったforeignKeyを持っています。外部キーは、外部テーブルのキーにリンクする現在のテーブルの値であるため、この場合は user_id にする必要があります

var $belongsTo = array('User' => array('className'  =>'User',
                                       'foreignKey' => 'user_id',
                                   'fields'     => array('username')
                                       )
                      );
于 2012-06-30T12:02:59.857 に答える