燃料PHP - ORM -有许多和属于



我有感情问题(哈哈)…它和ORM在一起。

我有两个模型"项目"one_answers"报价"。一个Item可以有很多Offer,所以Offer属于Item。但是,要约也有一个不同的项目。

这是我的(简化)项目模型:

class Model_Item extends OrmModel
{
  protected static $_belongs_to = array('user', 'offer');
  protected static $_has_many = array('offers');
  protected static $_properties = array(
    'id',
    'user_id',
  );
}

这是我的(简化)报价模型:

class Model_Offer extends OrmModel
{
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,因为它已经被报价的所有者使用了。我如何告诉燃料和ORM, owneditem_id是一个项目对象?

我终于明白了!

提供关系:

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 $_belongs_to = array('user', 'item');$_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

在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'
    ))););
}

最新更新