0

テーブルは

buildings (id)
contacts(id)
building_administrators (id, building_id, contact_id)

モデルは

Model_Building {
    protected $_has_many = array(
        'administrators' => array(
            'model' => 'Contact',
            'through' => 'building_administrators',
            'foreign_key' => 'building_id'          
        ),
    );
}

クエリを実行した後$building->administrators->find_all();、エラーが発生します: Unknown column 'building_administrators.administrator_id' in 'on clause' [ SELECT ..

これを解決する方法はありますか?

管理者エイリアスの名前を連絡先に変更することで解決できますが、クエリを実行する必要が$building->contacts->find_all()あり、それは良くありません(たとえば、管理者とブローカーがいる可能性があります)。

データベース テーブルで contact_id を administrator_id に名前変更することもできますが、DB 構造が間違っています。管理者テーブルがありません。

4

1 に答える 1

1

'far_key' => 'contact_id', を配列に追加してみてください。

いくつかの背景:foreign_keyリレーション$thisシップの説明でfar_keyオブジェクトが持っているキー名は、外部オブジェクトがリレーションシップで持っているキー名です

編集:必要なキーが欠落している場合、コハナがエイリアス名に基づいて独自のキー名を推測することを追加したかっただけです( http://kohanaframework.org/3.3/guide-api/ORM#get )

于 2013-07-23T12:15:16.950 に答える