有人可以解释当前网络框架中使用的ORM吗?
-
26-10-2019 - |
题
我是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 Joins一样返回该品牌的名称。
还是我以错误的方式进行操作。
这不必针对FuelPHP,我只想在这种情况下如何设置Orms。
解决方案
在FuelPHP中,您可以使用ORM SIMPLI定义模型文件中的关系:
型号/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,
)
);
}
型号/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']
其他提示
以某种轨道方式的一个例子是:
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...>]
无论如何,这都不是完整的代码,但希望您能理解这个想法。
不隶属于 StackOverflow