0

「hasOne」を介して関連付けられたPersonモデルがあります。Addressどちらのモデルも、REST プロキシ経由でデータをロードします。個人をロードしてアドレスを取得しようとすると、アドレスの URL への http リクエストが表示されますが、その中に個人 ID が含まれていないため、サーバーがエラーを送信します。

人:

Ext.define('AP.model.Person', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'id', type: 'int', persist : false },
        { name: 'name', type: 'string' }
    ],
    proxy: {
        type: 'rest',
        url : AP_ROOT_URL + 'persons/'
    },
    associations: [{
        type: 'hasOne', 
        model: 'AP.model.Addresses', 
        foreignKey: 'person_id',
        primaryKey: 'id',
        getterName: "getAddress"
    }]
});

住所:

Ext.define('AP.model.Address', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'person_id', type: 'int', persist : false },
        { name: 'address', type: 'string' }
    ],
    proxy: {
        type: 'rest',
        url : AP_ROOT_URL + 'addresses/'
    }
});

次のコード:

person.getAddress(function(address){
    console.log(address);
});

次へのリクエストを作成します。 http://localhost/addresses

次の要求を作成する必要がある場合: http://localhost/addresses/person_id (http://localhost/addresses/1)

4

1 に答える 1

0

ここにあるのはHasMany関係であり、 ではありませんHasOneHasOneドキュメントで述べられているように、「所有者モデルには、関連付けられたモデルの主キーを参照する外部キーがあると予想される」ため、これらのモデルを使用することはできません。あなたの場合、外部キーは関連付けられたモデルにあります(これにより、1対nの関係になります)。

于 2013-09-25T07:51:08.583 に答える