Question

Je suis très nouveau pour ORM et je sorte de comprendre la définition. La confusion commence lorsque je tente de mettre en œuvre les relations.

Supposons que j'ai ces deux tableaux.

de table:

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

Marque table noms:

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

Comment puis-je configurer les modèles avec $_has_many $_belongs_to de sorte que lorsque je fais $product1 = Model_Product::find('first'); Il renvoie également le nom de la marque, comme dans les jointures SQL.

Ou vais-je sur ce dans le mauvais sens.

Cela ne doit pas être spécifique à FuelPHP, je veux juste comment ORM de configuration dans ce cas.

Était-ce utile?

La solution

Dans FuelPHP vous pouvez utiliser ORM simpli définir la relation dans le fichier modèle:

modèle / 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,
        )
    );
}

modèle / product.php

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

Lorsque vous allez effectuer $brand = Model_Brand::find('first'); vous pouvez accéder à la liste des produits avec $brand['products']

Lorsque vous allez effectuer $product = Model_Product::find('first'); vous pouvez accéder à la marque avec $product['brand']

Autres conseils

Un exemple d'une manière un peu Rails-ish serait:

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

Ce n'est pas un code complet par tout moyen, mais nous espérons que vous aurez l'idée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top