0

誰かが私が抱えているこの問題を解決できることを願っています。SOに関する他の回答は、何らかの理由で私を助けてくれなかったようです。

HABTM 関係を持つ 2 つのテーブルがあります。出版物には多くの著者がおり、著者には多くの出版物があります。私の場合、データベース内のすべての出版物のリストを、対応する著者とともに出力しようとしています。

次のテーブルがあります。

出版物:

IDタイトル

0 テスト出版

著者:

id ファーストネーム ラストネーム ミドルネーム

0 ジョン・ドウ A

著者_出版物:

id author_id 出版物 ID

0 0 0

各テーブルの「id」列が主キーとして設定されます。

私の発行モデルは次のようになります。

class Publication extends AppModel {

    var $name = 'Publication';
    var $hasAndBelongsToMany = array(
        'Author'=>array(
            'className'=>'Author'
        )
    );     
}

最後に、PublicationsController には次の関数があります。

function index() {
$publications = $this->Publication->find('all');
$this->set('publications', $publications);
}

現在出版物に含まれているものは次のとおりです。

Array ( [0] => Array ( [Publication] => Array ( [id] => 0 [title] => TestPublica [type_id] => 1 ) [Author] => Array ( ) ) ) 

どうしてこれなの?私は (おそらくそれが私の問題です...) Author 配列に著者 John Doe が存在することを期待しています。もしそうなら、どこが間違っているのですか?そこのどこかに bindModel 呼び出しが必要ですか?

それとも...コードは実際に本来あるべき方法で実行されており、私の期待は間違っていますか? もしそうなら、すべての出版物とその著者のリストを返すにはどうすればよいでしょうか?

御時間ありがとうございます!

4

1 に答える 1

0

私は問題を見つけたと思います。テスト目的でDBにレコードを手動で挿入していました。各テーブルの最初のレコードの主キーIDをゼロに設定しました。SQL DBは通常(または常に?)最初のレコードを0ではなく1の主キーインデックスで開始します。なぜケーキがこれで機能しなかったのかわかりませんが、IDを1に変更すると問題が解決しました。変...

于 2012-07-03T03:54:49.527 に答える