使用扩展子表和模型的基表和模型的最佳方法是什么? 因此,例如,您有一个menuItems表和另一个表三明治,一对一menuItems.id = sandwiches.sandwichid的表之间存在关系。因此,sandwiche是一个menuItem,因此具有共享的基本字段但具有它; s拥有唯一的字段项。
我真的想用三明治来扩展menuItems,然后访问它的属性,创建一个新的场景等。所以当我制作一个新的三明治并保存它时会创建menuitem。
这是最好的原因,为什么这样做有更好的方法,如果不是,我该怎么做呢?
答案 0 :(得分:0)
在Yii2中,我将通过以下方式解决这个问题:
menuItems
表和扩展MenuItems
的{{1}}模型。yii\db\ActiveRecord
表格和展开sandwiches
的单独Sandwiches
模型。声明两者之间的关系方法(参见the docs)。
yii\db\ActiveRecord
让你的控制器处理两者之间的任何逻辑。
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)期间创建/修改其他记录。如果您不熟悉Yii2如何处理关系数据,我强烈建议您阅读第3步中链接的docs。它可以为您节省大量时间和精力,并且通常会加快您的速度代码和查询也是如此。