誰かが現在のWebフレームワークで使用されているORMを説明できますか?

StackOverflow https://stackoverflow.com/questions/6817501

質問

私はORMに非常に慣れていないので、定義を理解しています。私が関係を実装しようとすると、混乱が始まります。

これら2つのテーブルがあるとします。

製品テーブル:

+-------------+--------------+------+-----+---------+----------------+
| 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参加のように、ブランドの名前を返します。

または、私はこれについて間違った方法で進んでいます。

これはfuelphpに固有のものである必要はありません。この場合、ORMSをセットアップする方法が必要です。

役に立ちましたか?

解決

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

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

これは決して完全なコードではありませんが、うまくいけばアイデアを得ることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top