Frage

Ich bin sehr neu in Orm und verstehe die Definition irgendwie. Verwirrung beginnt, wenn ich versuche, Beziehungen zu implementieren.

Angenommen, ich habe diese beiden Tabellen.

Produkttabelle:

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

Markennamen Tabelle:

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

Wie richte ich die Modelle mit $_has_many $_belongs_to Also, wenn ich es tue $product1 = Model_Product::find('first');Es gibt auch den Namen der Marke zurück, wie in SQL Joins.

Oder gehe ich falsch vor.

Dies muss nicht spezifisch für FuelPhP sein, ich möchte nur, wie man Ormen in diesem Fall einstellt.

War es hilfreich?

Lösung

In FuelPhP können Sie die ORM -Simpli verwenden, um die Beziehung in der Modelldatei zu definieren:

Modell/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,
        )
    );
}

Modell/product.php

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

Wenn Sie ausführen $brand = Model_Brand::find('first'); Sie können auf Liste der Produkte zugreifen $brand['products']

Wenn Sie ausführen $product = Model_Product::find('first'); Sie können auf die Marke zugreifen mit $product['brand']

Andere Tipps

Ein Beispiel in einer gewissen Rails-ish-Art wäre:

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

Dies ist keineswegs vollständiger Code, aber hoffentlich bekommen Sie die Idee.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top