Php 有人能解释一下当前web框架中使用的ORM吗?
我是ORM的新手,我有点理解ORM的定义。当我试图实现关系时,混乱就开始了 假设我有这两张桌子 产品表:Php 有人能解释一下当前web框架中使用的ORM吗?,php,ruby-on-rails,orm,fuelphp,Php,Ruby On Rails,Orm,Fuelphp,我是ORM的新手,我有点理解ORM的定义。当我试图实现关系时,混乱就开始了 假设我有这两张桌子 产品表: +-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+--
+-------------+--------------+------+-----+---------+----------------+
| 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 | |
+------------+--------------+------+-----+---------+----------------+
品牌名称表:
+-------------+--------------+------+-----+---------+----------------+
| 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 | |
+------------+--------------+------+-----+---------+----------------+
如何使用$设置模型\u有许多$\u属于,以便在执行$product1=Model\u Product::find('first')代码>
它还返回品牌的名称,就像在SQL连接中一样
还是我走错了方向
这不一定是特定于fuelphp的,我只想知道在这种情况下如何设置ORMs。一个有点像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...>]
class品牌
有很多:产品
结束
类产品
属于:品牌
结束
product=product.first
产品品牌
=>
品牌=品牌第一
品牌产品
=> [, ]
无论如何,这都不是完整的代码,但希望您能理解。在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,
)
);
}
class Model_Product extends Orm\Model {
protected static $_belongs_to = array('brand');
}
model/product.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,
)
);
}
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']
访问该品牌,谢谢您的帮助。实际上,我希望得到一个关于SQL中实际联接的解释。您是否正在寻找一个示例,说明如何执行包含两个表中数据的联接查询?我知道。我对它与ORM的关系感到困惑。你的要求太广泛了,你有没有考虑过只看ORM的来源?我想你的第一个问题是,你假设ORM的实现都是相同的,概念应该是相似的,但实现取决于作者的意见。