/** * @return \yii\db\ActiveQuery */ public function getMenuItemContents() { return $this->hasMany(MenuItemContent::className(), ['content_id' => 'id']); }
/** * @return \yii\db\ActiveQuery */ public function getMenuItemContent() { return $this->hasOne(MenuItemContent::className(), ['menu_item_id' => 'id']); }
/** * Save MenuItem record model and relations * @param bool $insert * @throws \Exception */ public function saveMenuItem($insert = true) { $menuItemRecord = new MenuItemRecord(); if ($this->item_id) { $menuItemRecord->id = $this->item_id; } $menuItemRecord->isNewRecord = $insert; $menuItemRecord->attributes = $this->toArray(); if ($menuItemRecord->content_type == MenuItemRecord::CONTENT_LINK) { $menuItemRecord->layout_id = null; } else { $menuItemRecord->link_url = null; $menuItemRecord->link_target = null; } $menuItemRecord->main = is_array($this->boxes) && in_array(self::PROPERTY_MAIN, $this->boxes) ? 1 : 0; $menuItemRecord->active = is_array($this->boxes) && in_array(self::PROPERTY_ACTIVE, $this->boxes) ? 1 : 0; $menuItemRecord->public = is_array($this->boxes) && in_array(self::PROPERTY_PUBLIC, $this->boxes) ? 1 : 0; if ($menuItemRecord->save()) { if ($menuItemContent = MenuItemContent::findOne(['menu_item_id' => $menuItemRecord->id])) { $insert = false; } else { $menuItemContent = new MenuItemContent(); $menuItemContent->menu_item_id = $menuItemRecord->id; $insert = true; } if ($this->content_type != MenuItemRecord::CONTENT_LINK) { if ($this->content_type == MenuItemRecord::CONTENT_PAGE) { $menuItemContent->content_id = $this->content_id; $menuItemContent->category_id = null; } else { $menuItemContent->category_id = $this->content_id; $menuItemContent->content_id = null; } $menuItemContent->save(); } else { if (!$insert) { // Content record exists in table $menuItemContent->delete(); } } } }