/** * @return GoodsQuery */ public function getActiveQueryFilterGoods() { /** * @var GoodsQuery $query */ $query = Goods::find()->alias('gds'); if ($this->sex) { $query->andFilterWhere(['gds.sex_id' => $this->sex]); } if ($this->type) { $query->andFilterWhere(['gds.type_id' => $this->type]); } if ($this->color) { $query->andFilterWhere(['gds.color_id' => $this->color]); } if ($this->size) { $query->rightJoin(SizeGoodsRelation::tableName() . ' `sgr`', 'sgr.goods_id=gds.id'); $query->andFilterWhere(['sgr.size_id' => $this->size]); } return $query; }
public function afterSave($insert, $changedAttributes) { SizeGoodsRelation::deleteAll(['goods_id' => $this->id]); $values = []; foreach ($this->sizes as $id) { $values[] = [$this->id, $id]; } self::getDb()->createCommand()->batchInsert(SizeGoodsRelation::tableName(), ['goods_id', 'size_id'], $values)->execute(); parent::afterSave($insert, $changedAttributes); }