2017-06-20 61 views
2

最近,我需要像活動記錄一樣實現ORM,但使用PHP。所以我想寫的第一件事就是創建記錄。只要每個記錄像對待一個對象,你可以將值直接進入類屬性,像這樣:Rails ORM是以這種方式工作的嗎?

p = Product.new 
p.name = "Some Book" 

而不是所謂的創作方法。

所以,我想知道,如果ActiveRecord首先發送查詢到數據庫"DESCRIBE table_name"看看它有什麼列,然後把它們變成類屬性?

如果是這樣,這種方法是否有利於性能(每次創建模型的對象時都需要發送查詢)?

+0

我相信在php中有很多AR模式實現。至於你的問題,你可以從'ActiveRecord :: Base.connection.schema_cache'開始 –

回答

1

不,ActiveRecord在您創建Model類的新實例時不會查詢db。在Ruby中,attr_accessor有助於確定getter S和setter s,在軌道您可以在控制檯驗證爲

p = Product.new 
#=> #<Product id: nil, created_at: nil, updated_at: nil> 

沒有DB調用,只是一個新的產品類對象。

+0

我很困惑,它讓用戶可以將值傳遞給類(模型)的未知屬性。所以,可能會定義一些setter,當用戶試圖設置某個屬性時,它會被保存到某種數組中,這會在調用CREATE方法時觸發,然後檢查屬性名稱是否與表中的名稱匹配? – Src

相關問題