在Yii2,2表2模型中扩展数据库模型

时间:2016-05-11 14:46:15

标签: yii2

使用扩展子表和模型的基表和模型的最佳方法是什么? 因此,例如,您有一个menuItems表和另一个表三明治,一对一menuItems.id = sandwiches.sandwichid的表之间存在关系。因此,sandwiche是一个menuItem,因此具有共享的基本字段但具有它; s拥有唯一的字段项。

我真的想用三明治来扩展menuItems,然后访问它的属性,创建一个新的场景等。所以当我制作一个新的三明治并保存它时会创建menuitem。

这是最好的原因,为什么这样做有更好的方法,如果不是,我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

在Yii2中,我将通过以下方式解决这个问题:

  1. 创建menuItems表和扩展MenuItems的{​​{1}}模型。
  2. 创建单独的yii\db\ActiveRecord表格和展开sandwiches的单独Sandwiches模型。
  3. 声明两者之间的关系方法(参见the docs)。

    yii\db\ActiveRecord
  4. 让你的控制器处理两者之间的任何逻辑。

  5. 您可以选择使用class MenuItem extends \yii\db\ActiveRecord { public function getSandwich() { return $this->hasOne(Sandwich::className, ['sandwichid' => 'id']); } } class Sandwich extends \yii\db\ActiveRecord { public function getMenuItem() { return $this->hasOne(MenuItem::className(), ['id' => 'sandwichid']); } } 的{​​{1}}和ActiveRecord方法在保存事件(doc here)期间创建/修改其他记录。
  6. 如果您不熟悉Yii2如何处理关系数据,我强烈建议您阅读第3步中链接的docs。它可以为您节省大量时间和精力,并且通常会加快您的速度代码和查询也是如此。