2013-07-29 21 views
0

想象一下,我們在mysql中有兩個表:汽車和引擎。骨幹關係,使用mysql數據表示模型作爲錶行

汽車錶行將會有以下藥結構:

  • id:整數
  • engineId:INT(外鍵engines.id列)
  • brand:字符串

引擎錶行本一個:

  • id:INT,
  • type:字符串(假設我們具有電動和柴油發動機)

所以,我想要從這些表中的所有數據,創建客戶端模型集合和最後顯示錶與合併的結果:

  • 車ID
  • 名牌
  • 發動機類型

所以,我已經嘗試了很多例子,但我不明白我做錯了什麼。你能幫忙嗎?

// Create car model 
window.Car = Backbone.RelationalModel.extend({ 

}); 

// Create engine model 
window.Engine = Backbone.RelationalModel.extend({ 
    relations: [{ 
    type: 'HasMany', 
    key: 'cars', 
    relatedModel: 'Car', 
    reverseRelation: { 
     key: 'engine', 
     includeInJSON : 'engineId', 
    } 
    }] 
}); 

// Create engine instance 
var engine = new window.Engine({ 
    id : 1, 
    type : 'electric', 
}); 

// Create car instance 
var car = new window.Car({ 
    id  : 1, 
    brand : 'Toyota', 
    engineId : 1, 
}); 

// i expect to get 'electric' 
console.log(car.getRelation('engine').type); 

回答

1

試試這個:

// Create car model 
var Car = Backbone.RelationalModel.extend({ 
}); 

// Create engine model 
var Engine = Backbone.RelationalModel.extend({ 
    relations: [{ 
     type: 'HasMany', 
     key: 'cars', 
     relatedModel: Car, 
     reverseRelation: { 
      key: 'engine' 
     } 
    }] 
}); 

// Create engine instance 
var engine = new Engine({ 
    id : 1, 
    type : 'electric' 
}); 

// Create car instance 
var car = new Car({ 
    id  : 1, 
    brand : 'Toyota', 
    engine : 1 
}); 

// get 'electric' 
console.log(car.get('engine').get('type')); 
+0

是啊,這樣的作品,但是你有沒有在有關規定'任何地方engineId'場。這是否意味着,當我們自動爲'engineId'字段定義關鍵'引擎'主幹關係外觀時? – avasin

+0

是的。並且你犯了三個錯誤:1)relatedModel:需要RM模型,2)engineId - 沒有在任何地方聲明,3)getRelation關係的返回規則 – Sergey

+0

沒有看到你編輯的問題。 – Sergey