2

私は関係の問題を抱えています (笑)... それは ORM にあります。

「アイテム」と「オファー」の 2 つのモデルがあります。アイテムには多くのオファーを含めることができるため、オファーはアイテムに属します。ただし、オファーには 1 つの異なるアイテムもあります。

これが私の(簡略化された)アイテムモデルです:

class Model_Item extends \Orm\Model
{

  protected static $_belongs_to = array('user', 'offer');
  protected static $_has_many = array('offers');

  protected static $_properties = array(
    'id',
    'user_id',
  );

}

これが私の(簡略化された)オファーモデルです:

class Model_Offer extends \Orm\Model
{
protected static $_belongs_to = array('item');
protected static $_has_one = array('item');

protected static $_properties = array(
  'id',
  'item_id',
  'owneditem_id', // <- THIS IS THE ITEM IT OWNS
  );
}

ご覧のとおり、オファー モデルに「所有」アイテムとそれが「所有」するアイテムを保存できるようにする必要がありますが、item_id はオファーの所有者によって既に取得されているため、再宣言できません。ownitem_id がアイテム オブジェクトであることを Fuel と ORM に伝えるにはどうすればよいですか?

4

2 に答える 2

0

Fuel/app/migration で create_Offers.php を変更します

public function up()
{
    \DBUtil::create_table('offers', array(
        'id' => array('constraint' => 11, 'type' => 'int', 'auto_increment' 
    ), array('id'),false, 'InnoDB', 'utf8_general_ci',
array(
    array(
        'constraint' => 'offers_items',
        'key' => 'offer_id',
        'reference' => array(
            'table' => 'items',
            'column' => 'id',
        ),
        'on_update' => 'CASCADE',
        'on_delete' => 'RESTRICT'
    ))););
}
于 2013-04-25T15:17:05.807 に答える
0

私は最後にそれを手に入れました!

オファー関係:

protected static $_has_one = array(
        //(offered item)
        'offereditem' => array(
            'key_from' => 'offereditem_id',
            'model_to' => 'Model_Item',
      'key_to' => 'id',
      'cascade_save' => true,
      'cascade_delete' => false,
        )
    );

とアイテム モデルの関係:

protected static $_belongs_to = array('user', 'item'); protected static $_has_many = array('offers');

移行の場合:

//Add OfferedItem to Offers Migration
oil generate migration add_offereditem_to_offers offereditem:int

//Rename OfferedItem to OfferedItem_ID in Offers Migration
oil generate migration rename_field_offereditem_to_offereditem_id_in_offers
于 2013-01-11T20:08:53.813 に答える