1

我正在尝试理解 ORM 并寻找以下解释的示例:

表映射到类,行映射到对象,列映射到对象属性

我知道表映射到类,但是映射到对象的行和映射到对象属性的列的术语让我感到困惑。

4

3 回答 3

3

我发现实际的例子最有帮助。试试这个:

Ruby 和 Rails:

创建类(创建表)

class House < ActiveRecord::Base
  attr :length, :width, :finish, :price, :available
end

创建实例(插入一行)

my_house = House.new(:length => 23, :width => 12, :finish => 'siding', 
:price => '$100,000.00', :available => false)

获取实例(选择一行)

my_house = House.find(1)
puts my_house.length, my_house.width, my_house.price, 
my_house.finish, my_house.available?

SQL:

创建表(创建类)

create table house(
length Integer, 
width Integer, 
finish Varchar(255), 
price Text, 
available Boolean)
# Note this is generic SQL, adapt as needed 
# to your implementation - SQLserver, Oracle, mySQL, etc.

插入一行(创建实例)

insert into house (length,width,finish,price,available)
values            (23, 12, 'siding', '$100,000.00', false)

选择一行(获取实例)

my_house = select * from house where id = 1 
于 2013-04-14T15:13:50.407 回答
2

因此,以 ActiveRecord 为例,假设您有一个表 posts,其中包含 'id'、'title'、'date' 列。帖子表中有 2 行。

posts = Post.all

posts 将是一个长度为 2 的数组。数组中的每个对象都是其中的一行,并且是 Post 类的一个实例。

posts[0]

这是数组中的第一个对象,它是表中第一行的表示posts

posts[0].title

这将返回title第一个对象的属性,即表title第一行中的posts列。

这有帮助吗?

于 2013-04-14T15:02:51.827 回答
2

在我画画的时候,这里出现了一些很好的答案,但仍然希望我的简单答案会有所帮助:(
因为你用'rails'标记了你的问题,我应用了rails代码)

class User < ActiveRecord::Base
  attr_accessor :first_name, :email
end

puts User.inspect # => class
puts u = User.create(:first_name => 'name', 
                     :email => 'em@il.com') # => object (class instance)
puts u.name # => object's attribute

D B:
在此处输入图像描述

于 2013-04-14T15:41:05.513 回答