Yii2。相关车型

问题描述:

我有3款车型:Item,Serials和SerialsCategories。当我显示Item窗体(创建或更新)时,我需要显示属于上一步中选定的categoryId的连续剧。一个序列可以属于多个类别。Yii2。相关车型

现在,我有我的产品型号:

public function getSerialsTypeByCategory() { 
     return (new SerialType)->getByCategory($this->itemCategoryId); 
    } 

在我SerialType型号:

public function getByCategory($itemCategoryId) { 

     return SerialTypeItemCategory::find()->select(['serialTypeId'])->where(['itemCategoryId' => $itemCategoryId])->all(); 

    } 

这是工作,它做什么,我需要,但...这是正确的方式?有没有更好的办法?

+0

看来我的权利..代码是在正确的地方(模型),并写在正确的方式(吸气) – scaisEdge

这并不是错误的你在做什么。但有更多的东西 - 检查此链接: Working with Relational Data

如果使用->hasOne->hasMany定义的关系,你的模型上涨了额外的好处,比如懒惰或预先加载加盟:

​​

与一个关系,您还可以使用->link->unlink来添加/删除相关数据,而不必考虑链接的字段。

此外,它很容易定义通过结台关系:

class Order extends ActiveRecord 
{ 
    public function getItems() 
    { 
     return $this->hasMany(Item::className(), ['id' => 'item_id']) 
      ->viaTable('order_item', ['order_id' => 'id']); 
    } 
} 
+0

谢谢很多!我会研究一下viaTable,第一次看到它。 – Eduardo