有人可以解释当前 Web 框架中使用的 ORM 吗?
Posted
技术标签:
【中文标题】有人可以解释当前 Web 框架中使用的 ORM 吗?【英文标题】:Could someone explain the ORM used in current web frameworks? 【发布时间】:2011-07-25 14:15:17 【问题描述】:我对 ORM 很陌生,我有点理解这个定义。当我尝试实现关系时,困惑就开始了。
假设我有这两张表。
产品表:
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| brand_id | int(11) | YES | | NULL | |
| name | varchar(100) | YES | | NULL | |
| description | text | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
品牌名称表:
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
如何使用$_has_many
$_belongs_to
设置模型,以便当我使用$product1 = Model_Product::find('first');
它还返回品牌名称,就像在 SQL 连接中一样。
或者我是不是走错了路。
这不必特定于fuelphp,我只是想在这种情况下如何设置ORM。
【问题讨论】:
我认为您的第一个问题是您假设ORM实现都是相同的,概念应该相似,但实现取决于作者的意见。 【参考方案1】:在fuelphp中你可以使用ORM simpli在模型文件中定义关系:
model/brand.php
class Model_Brand extends Orm\Model
protected static $_has_many = array(
'products' => array(
'model_to' => 'Model_Product',
'key_from' => 'id',
'key_to' => 'brand_id',
'cascade_save' => false,
'cascade_delete' => true,
)
);
model/product.php
class Model_Product extends Orm\Model
protected static $_belongs_to = array('brand');
当您执行$brand = Model_Brand::find('first');
时,您可以使用$brand['products']
访问产品列表
当您执行$product = Model_Product::find('first');
时,您可以使用$product['brand']
访问品牌
【讨论】:
【参考方案2】:一个有点像 Rails 的例子是:
class Brand
has_many :products
end
class Product
belongs_to :brand
end
product = Product.first
product.brand
=> <#Brand...>
brand = Brand.first
brand.products
=> [<#Product...>, <#Product...>]
这绝不是完整的代码,但希望你能明白。
【讨论】:
感谢您的帮助。我实际上希望对 SQL 中的实际连接有一个解释。 您是否正在寻找如何执行包含两个表中数据的连接查询的示例? 我知道。我对它与 ORM 的关系感到困惑。 你的要求太宽泛了,你考虑过只看 ORM 的来源吗?以上是关于有人可以解释当前 Web 框架中使用的 ORM 吗?的主要内容,如果未能解决你的问题,请参考以下文章