Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 有人能解释一下当前web框架中使用的ORM吗?_Php_Ruby On Rails_Orm_Fuelphp - Fatal编程技术网

Php 有人能解释一下当前web框架中使用的ORM吗?

Php 有人能解释一下当前web框架中使用的ORM吗?,php,ruby-on-rails,orm,fuelphp,Php,Ruby On Rails,Orm,Fuelphp,我是ORM的新手,我有点理解ORM的定义。当我试图实现关系时,混乱就开始了 假设我有这两张桌子 产品表: +-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+--

我是ORM的新手,我有点理解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    |                |
+------------+--------------+------+-----+---------+----------------+
品牌名称表:

+-------------+--------------+------+-----+---------+----------------+
| 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的实现都是相同的,概念应该是相似的,但实现取决于作者的意见。