Pregunta

Soy muy nuevo en Orm y entiendo la definición. La confusión comienza cuando intento implementar relaciones.

Supongamos que tengo estas dos tablas.

Tabla de productos:

+-------------+--------------+------+-----+---------+----------------+
| 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    |                |
+-------------+--------------+------+-----+---------+----------------+

Tabla de marcas:

+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int(11)      | NO   | PRI | NULL    | auto_increment |
| name       | varchar(100) | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+

¿Cómo configuro los modelos con $_has_many $_belongs_to para que cuando lo hago $product1 = Model_Product::find('first');También devuelve el nombre de la marca, como en SQL se une.

¿O voy por esto de la manera incorrecta?

Esto no tiene que ser específico para Fuelphp, solo quiero cómo configurar Orms en este caso.

¿Fue útil?

Solución

En Fuelphp, puede usar ORM Simpli Definir la relación en el archivo del modelo:

modelo/marca.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,
        )
    );
}

modelo/producto.php

class Model_Product extends Orm\Model {
    protected static $_belongs_to = array('brand');
}

Cuando actuarás $brand = Model_Brand::find('first'); Puede acceder a la lista de productos con $brand['products']

Cuando actuarás $product = Model_Product::find('first'); puedes acceder a la marca con $product['brand']

Otros consejos

Un ejemplo de una manera algo rieles sería:

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...>]

Esto no es un código completo de ninguna manera, pero espero que obtenga la idea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top