1

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

SQL結合のように、ブランド名も返す$_has_many $_belongs_toようにモデルを設定するにはどうすればよいですか。$product1 = Model_Product::find('first');

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

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

4

2 に答える 2

2

Fuelphp では、ORM simpli を使用して、モデル ファイルでリレーションを定義できます。

モデル/ブランド.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,
        )
    );
}

モデル/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']

于 2011-09-09T07:23:59.697 に答える
1

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

これは決して完全なコードではありませんが、アイデアが得られることを願っています。

于 2011-07-25T18:00:16.257 に答える