私は、Sencha Touch 2.0 hasMany associationsの作業にはかなりの時間を費やしてきました。特にデータモデルが多対多の関係を直接許可していないように見えます。私は2つのモデルを持っています - 人々とロール(もっとたくさんありますが、これらはこの例で重要な2つです)、それぞれは多対多を持っています。Sencha touch 2.0の多対多関連 - どのように?
私はもともと、各モデルのhasManyでこれを行うことができると思っていましたが、データがデータベースの3番目の正規の形式で格納されていたので、3番目のperson-to-roleモデル。コードはここにある:
Ext.define('SMToolkit.model.Person', {
extend: 'Ext.data.Model',
config: {
fields: [
'id',
'first_name',
'last_name',
'email',
'address',
'phone1',
'phone2',
'type',
'location'
],
hasMany: [
{
model: 'SMToolkit.model.Person_Role',
name: 'role'
}
],
proxy: {
type: 'rest',
url : 'index.php/api/persons'
}
}
});
Ext.define('SMToolkit.model.Role', {
extend: 'Ext.data.Model',
config: {
fields: [
'id',
'name',
'description',
'type',
'show_id'
],
hasMany: [
{
model: 'SMToolkit.model.Person_Role',
name: 'person'
},
{
model: 'SMToolkit.model.Scene_Role',
name: 'scene'
},
{
model: 'SMToolkit.model.Thing',
name: 'thing'
}
],
proxy: {
type: 'rest',
url : 'index.php/api/roles'
}
}
});
Ext.define('SMToolkit.model.Person_Role', {
extend: 'Ext.data.Model',
config: {
fields: [
'person_id',
'role_id'
],
associations: [
{
type: 'belongsTo',
model: 'SMToolkit.model.Person',
name: 'person'
},
{
type: 'belongsTo',
model: 'SMToolkit.model.Role',
name: 'role'
},
],
proxy: {
type: 'rest',
url : 'index.php/api/personsroles'
}
}
});
...私はpersonsroles URLが上記の実際に有効なデータセットを返すないことが確認できましたので、私はそこに何かがなければならないことを知っている
私が見てロールレコード、関連するストアのフィールドを見ることができますが、データベースのPerson_Roleテーブルに適切なレコードがあることがわかっていても、レコードのPersons配列は空です。
私はそうのようなレコードを取得しています:
onRoleSelect: function(list, index, node, record) {
var editButton = this.getEditButton();
if (!this.showRole) {
this.showRole = Ext.create('SMToolkit.view.role.Show');
}
person = record.person();
thing = record.thing();
scene = record.scene();
person.load();
thing.load();
scene.load();
// Bind the record onto the view
this.showRole.setRecord(record);
// Push the show show view into the navigation view
this.getRoleContainer().push(this.showRole);
},
は私が間違って何をやっているの?関連データがないのはなぜですか?
さらに問題を複雑にするために、私は上記のassociatin人を得ることができたとしても、それはちょうど私Person_Roleのレコードを与えるだろうと私はそこからトラバースする方法がわかりません実際の人物の記録 –